[英]Pthread - time of execution
為什么變量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;
}
由於這一行:
if(a > 0) { a--; }
如果a等於或小於0時不遞減,則a不能等於-1。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.