这是线程A代码。
void sleep(Data x)
{
pthread_mutex_lock( &(X->lock) );
struct timeval _T;
gettimeofday( &_T, 0 );
T.tv_sec = _T.tv_sec;
T.tv_nsec = 1000 * _T.tv_usec;
pthread_cond_timedwait( &(x->condition), &(x->lock), &T );
x->value = 0;
pthread_mutex_unlock( &(x->lock) );
}
下面是线程B代码
void wakeup(Data y)
{
pthread_mutex_lock( &(y->lock) );
y->value = 1;
pthread_cond_signal( &(y->condition) );
pthread_mutex_unlock( &(y->lock) );
}
struct Data {
pthread_cond_t condition;
pthread_mutex_t lock;
int value;
} ;
我在多线程系统中面临崩溃。根据bt,其中一个线程(A)显示在pthread_cond_timedwait
中,而另一个线程(B)显示在pthread_mutex_lock
中。线程B获得了一些数据来唤醒线程A。
崩溃与超时pthread_cond_timedwait
传递的时间同时发生。崩溃显示在线程B中。每个bt值为“ 0”。
在代码部分,请不要查找语法错误。所有变量均已正确初始化