Несколько потоков в программе C

Да, Ваш второй отрывок кода совершенно допустим.

Каждый раз-autorelease отправляется в объект, он добавляется к самому внутреннему пулу автовыпуска. Когда пул истощен, он просто отправляет - выпуск ко всем объектам в пуле.

пулы Автовыпуска являются просто удобством, которое позволяет Вам задерживать отправку - выпуск до "позже". Тот "позже" может произойти в нескольких местах, но наиболее распространенное в приложениях для GUI Какао в конце текущего цикла цикла выполнения.

5
задан gamma4332 8 November 2009 в 02:07
поделиться

4 ответа

Да, вы можете использовать pthread_join () (см. Другие ответы, чтобы узнать, как это сделать). Но позвольте мне объяснить модель pthread и показать вам другой вариант.

В Unix процесс завершается, когда основной поток возвращается из основного, когда какой-либо поток вызывает exit () или когда последний поток вызывает pthread_exit (). Основываясь на последнем варианте, вы можете просто сделать так, чтобы ваш основной поток вызвал pthread_exit (), и процесс будет оставаться активным, пока работает хотя бы еще один поток.

8
ответ дан 18 December 2019 в 09:08
поделиться

Есть несколько способов сделать это, но самый простой - вызвать pthread_exit () перед возвратом из main () .

Обратите внимание, что этот метод работает, даже если поток, который вы хотите подождать, не может быть присоединен.

3
ответ дан 18 December 2019 в 09:08
поделиться

Да, одним из таких действий является использование функции pthread_join : предполагается, что ваш поток находится в состоянии "присоединяемый".

  • pthread_create : после того, как эта функция вернет управление, ваш поток будет выполнять вашу функцию потока.

  • после pthread_create , используйте tid от pthread_create до pthread__join .

Если ваш поток отключен, вы должны использовать какой-нибудь другой метод , например общую переменную, ожидание сигнала (ов), общую очередь и т. д.

Большой справочный материал доступен здесь .

5
ответ дан 18 December 2019 в 09:08
поделиться

Вы можете посмотреть эту страницу: http://publib.boulder.ibm.com/iseries/v5r2/ic2924/index.htm?info/apis/users_25.htm

 rc = pthread_create(&thread, NULL, threadfunc, NULL);
  checkResults("pthread_create()\n", rc);

  printf("Wait for the thread to exit\n");
  rc = pthread_join(thread, &status);
1
ответ дан 18 December 2019 в 09:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: