LINUX.ORG.RU

pthread не заходит в функцию потока


0

2

Есть потоки, и есть функция, которую поток должен вызывать. В самом начале функции потока есть печаталка, сигнализирующая о том, что поток эту функцию вызывал

printf("\n%s", "tread_func entered");

Проблема вот в чем, - если я делаю потоки по дефолту ( pthread_create....pthread_join ), то всё работает. Однако, если я в аттрибутах потока ставлю PTHREAD_CREATE_DETACHED , то в функцию потока поток заходить перестает). Причем, если вызвать много этих поток (к примеру в цикле штук 10), тогда временами заходит, а если один, то нет.

Вот так делаю:

pthread_t thread;
    pthread_attr_t attr; //threads attributes
    pthread_attr_init(&attr);
    pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);

    int i;
    for (i = 0; i < 10; i++) {
        state = pthread_create(&thread, &attr, thread_func, NULL);
        if (state == 0) printf ("\n%s","thread created");
    }
pthread_attr_destroy(&attr);
Скажите пожалуйста, что не так ?

Ответ на: комментарий от anonymous

Да пофиг на циклы, я не понимаю как мне сделать потоки работающими одновременно. (в идеале не мешающими друг другу). Потому что то, что приходило мне в голову, не работает.

Zabroid
() автор топика
Ответ на: комментарий от Zabroid

Сначала учатся ходить, и только потом бегать.

anonymous
()
Ответ на: комментарий от Zabroid

Да пофиг на циклы, я не понимаю как мне сделать потоки работающими одновременно

Дык сходи по ссылке по ссылке :)

quasimoto ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.