実装されたプールを介して作成とキャンセルを使用しようとしているプログラムがあります。
作成は次のとおりです。
int threadsNum=10;
while (created<threadsNum){
pthread_t newThread;
pthread_struct *st; //Open the thread that handle the deleting of the sessions timeout.
st = (pthread_struct*)malloc(sizeof(pthread_struct));
st->id = created;
st->t = newThread;
pthread_mutex_lock( &mutex_threadsPool );
readingThreadsPool[created] = st;
pthread_mutex_unlock( &mutex_threadsPool );
if((threadRes1 = pthread_create( &newThread, NULL, pcapReadingThread, (void*)created)))
{
syslog(LOG_CRIT, "Creating Pcap-Reading Thread %d failed.",created);
printf( "Creating Pcap-Reading Thread %d failed.\n",created);
exit(1);
}
syslog(LOG_INFO, "Created Pcap-Reading Thread %d Successfully.",created);
created++;
}
後でキャンセルして再起動しようとします:
pthread_t t;
pthread_struct* tstr;
int i;
pthread_mutex_unlock( &mutex_threadsPool );
//first go on array and kill all threads
for(i = 0; i<threadsNum ; i++ ){
tstr = readingThreadsPool[i];
if (tstr!=NULL){
t = tstr->t;
if (pthread_cancel(t)!=0){
perror("ERROR : Could not kill thread");
}
else{
printf("Killed Thread %d \n",i);
}
}
}
ここまでは順調ですが、唯一の問題は、出力が Error : Could not kill thread : Illegal Seek Killed Thread 1 であることです。
殺されたスレッド 2
殺されたスレッド 3
殺されたスレッド 4
殺されたスレッド 5
殺されたスレッド 6
殺されたスレッド 7
殺されたスレッド 8
殺されたスレッド 9
0 インデックスのスレッドも強制終了しないのはなぜですか?
Illegal Seek については何も見つかりませんでした..
助けてくれてありがとう
ありがとう