-1
私はいくつかのpthreadを実行するプログラムを持っていて、すべてのスレッドにはconnect()
,recv()
とsend()
があります。問題は、メッセージ"User defined signal 1"
を表示しているプログラム全体を偶然に閉じてしまうことがあることです。ユーザ定義信号1は私のPOSIXプログラムを終了させます!
pthread_mutex_t cur_lock;
int stop = 0;
void SocketsFunction(){
//..
connect();
while(recv()<0)
{
//do stuff
send();
}
close();
return NULL;
}
void job()
{
//..
while (!stop)
{
if (something)
//..
else
{
stop = 1;
break;
}
pthread_mutex_unlock(&cur_lock);
SocketsFunction();
pthread_mutex_lock(&cur_lock);
}
pthread_mutex_unlock(&cur_lock);
return NULL;
}
main(){
//..
pthread_mutex_init(&cur_lock, NULL);
//..
for(i = 0; i < 30; ++i)
pthread_create(&pID, NULL, job, NULL);
//..
}
あなたの考えは、プログラムを実行しているときにmain関数でpthread_sigmaskを初期化するということです。 – Brian