Всем привет.
Я постигаю многопоточное программирование и сегодня уперся в совершенно не понятное мне поведение своей программы. Вот её тестовый вариант:
http://pastebin.com/S6bHbXcU скомпилить можно так: gcc -lpthread test.c -o test Почитал маны по pthread_cancel и pthread_mutex_lock и погуглил и всё равно не пойму, почему программа зависает (блокируется в одном из pthread_join навечно), ведь я освобождаю мьютекс после cancel-ов. И совсем уже взрывает мой мозг то, что если я оставляю константу TEST не объявленной, чтобы убрать вывод из потоков, то сколько программу не запускай, она не виснет. А если константу TEST объявить, то программа зависает через раз.
Подскажите пожалуйста, что я делаю не так
Для нас [Thompson, Rob Pike, Robert Griesemer] это было просто исследование. Мы собрались вместе и решили, что ненавидим C++ [смех].