Есть потоки, и есть функция, которую поток должен вызывать. В самом начале функции потока есть печаталка, сигнализирующая о том, что поток эту функцию вызывал
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);