-1
为什么变量a
不假定值0或-1而是0和1?线程 - 执行时间
pthread_mutex_t stop = PTHREAD_MUTEX_INITIALIZER;
int a = 1;
void* decrement(void* arg)
{
pthread_mutex_lock(&stop);
if(a > 0) { a--; }
pthread_mutex_unlock(&stop);
pthread_exit(NULL);
}
int main()
{
pthread_t tid, tid1;
pthread_attr_t tattr;
pthread_attr_init(&tattr);
pthread_attr_setdetachstate(&tattr, PTHREAD_CREATE_DETACHED);
pthread_create(&tid, &tattr, decrement, NULL);
pthread_detach(tid);
pthread_create(&tid1, &tattr, decrement, NULL);
pthread_detach(tid1);
cout << a << endl;
}
你为什么分离线程? (每次两次,重点?) –
您在'main'的最后一行读到'a'是不受保护的,这是一个错误。 – Mat
并行运行 – user3551234