Следующий код заканчивается ошибкой сегментации при первом вызове pthread_cancel, но только в Linux.Под Mac OS работает нормально.Мне не разрешено вызывать pthread_cancel в потоке, который завершил работу?Может мне вообще не стоит вызывать pthread_cancel?
#include <iostream>
#include <pthread.h>
using namespace std;
void* run(void *args) {
cerr << "Hallo, Running" << endl;
}
int main() {
int n = 100;
pthread_t* pool = new pthread_t[n];
for(int i=0;i<n;i++) {
pthread_t tmp;
pthread_create(&tmp,NULL,&run,NULL);
pool[i] = (tmp);
}
for(int i=0;i<n;i++) {
pthread_join(pool[i],0);
}
for(int i=0;i<n;i++) {
pthread_cancel(pool[i]);
}
}