У меня есть программа, которая запускает некоторые потоки, и в каждом потоке есть connect()
, recv()
и send()
.Проблема в том, что иногда он внезапно закрывает всю программу, показывая сообщение "User defined signal 1"
.Он работает в Linux, используя потоки POSIX, в C. Код выглядит так:
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);
//..
}