Пример в конце письма падает в строке с тегом !!!
Подскажите, это ожидаемое поведение, в соответствии с дизайном phtreads?
Логика для меня совсем не понятная, такое впечатление, что id потока через какое-то количество операций с потоками становится запрещенным для использования.
Вместо pthread_kill можно использовать любую другую функцию, которая хочет на вход pthread_t, результат будет таким же.
система Red Hat Enterprise Linux AS release 4 Update 7
int main(int argc, char* argv[])
{
const size_t size = 300;
// case 1
for (size_t i = 0; i < size; ++i)
{
pthread_t id;
pthread_create(&id, 0, thread, 0);
pthread_join(id, 0);
pthread_kill(id, 0);
}
// case 2
pthread_t* id = new pthread_t[size];
for (size_t i = 0; i < size; ++i)
{
pthread_create(&id[i], 0, thread, 0);
}
for (size_t i = 0; i < size; ++i)
{
pthread_join(id[i], 0);
}
for (size_t i = 0; i < size; ++i)
{
printf("Trying pthread_kill on %x \n", id[i]);
pthread_kill(id[i], 0);// !!! CRASH SIGSEGV inside of pthread_kill for i==0
}