Портирование приложения с fork() на pthread_create()

Я переношу приложение Linux на iphone, и я хотел бы знать, сколько мне нужно переписать, чтобы сделать его многопоточным, а не многопроцессорным приложением.

Кроме того, если я просто заменю разветвленный код вызовом функций в другом потоке, я получу exec_bad_address в, казалось бы, случайных местах в моем потоке выполнения... Кто-нибудь знает, почему это может быть так?

Спасибо!


person lol    schedule 28.06.2011    source источник


Ответы (1)


Это точно такие же усилия, которые вы приложили бы при переходе вашего приложения на многопоточное на платформе unix. Простой замены кода ответвления вызовами pthread_create() почти всегда недостаточно. Например, может потребоваться переписать весь код, поддерживающий взаимодействие между процессами. Скажем, один процесс разветвляет другой, а затем два процесса взаимодействуют через конвейер. Конечно, так больше не получится. И т.д. Вы поняли идею.

Кстати, хотя pthreads доступны и отлично работают на iOS, вам настоятельно рекомендуется использовать другие технологии, доступные в iOS. Для получения дополнительной информации, пожалуйста, прочитайте

Руководство по параллельному программированию

в частности, раздел под названием «Миграция из потоков».

Дополнительные сведения о потоковой передаче см.

Руководство по программированию потоков

person Massimo Cafaro    schedule 28.06.2011