void *threadWork(void *data) { ThreadData *td = (ThreadData*)data; cout << "tid" << td->t << endl; bool hasValue = false; int a; pthread_mutex_lock (&mutexsum); printf("q address tid%d :%x\n",td->t,td->q); cout << "get:" << td->q->front() << endl; if(!td->q->empty()) { a = td->q->front(); td->q->pop(); hasValue = true; cout << "get:" << a << endl; } pthread_mutex_unlock (&mutexsum); if(hasValue) td->dowork((void*)a); pthread_exit(NULL); }