Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > posix threads, несколько вопросов


Автор: e7x 24.4.2007, 06:22
доброе утро всем.
возник у меня ряд жизненно важных вопросов по pthread.h:
1. если запустить потоки и завершить главный поток, все дочерние потоки, как понимаю, подохнут?
2. вытекает из первого. если нужно запустить, скажем, 300 потоков, и главный поток должен дождаться выполнения всех дочерних, мне нужно вызывать pthread_join для каждого потока?
3. может ли родитель корректно убить дочерний поток? в одной из веток тут мелькала фраза "В линукс потоки работают как процессы", действительно ли это для POSIX threads?

С уважением.

Автор: MAKCim 24.4.2007, 16:01
Цитата(e7x @  24.4.2007,  06:22 Найти цитируемый пост)
1. если запустить потоки и завершить главный поток, все дочерние потоки, как понимаю, подохнут?

да
Цитата(e7x @  24.4.2007,  06:22 Найти цитируемый пост)
2. вытекает из первого. если нужно запустить, скажем, 300 потоков, и главный поток должен дождаться выполнения всех дочерних, мне нужно вызывать pthread_join для каждого потока?

да, можно ждать в цикле
Код

while (count) {
    pthread_join(threads[count], NULL);
    --count;
}

Цитата(e7x @  24.4.2007,  06:22 Найти цитируемый пост)
3. может ли родитель корректно убить дочерний поток? в одной из веток тут мелькала фраза "В линукс потоки работают как процессы", действительно ли это для POSIX threads?

см. man pthread_cancel
что касается работы, есть linuxthreads, а есть NPTL (Native Posix Threads Library)
так вот linuxthreads - процессы с разделяемыми ресурсами, NPTL работает по-другому (подробнее ищи в гугле)

Автор: e7x 25.4.2007, 03:12
MAKCim, спасибо огромное!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)