#include
#include
#include
#include
#include
static pthread_mutex_t mtx = pthread_mutex_initializer;
static pthread_cond_t cond = pthread_cond_initializer;
struct node
*head = null; /*[thread_func]*/
/*釋放節點記憶體 */
static void cleanup_handler(void *arg)
static void *thread_func(void *arg)
pthread_mutex_unlock(&mtx); //臨界區資料操作完畢,釋放互斥鎖
}pthread_cleanup_pop(0);
return 0;
}int main(void)
printf("thread 1 wanna end the cancel thread 2.\n");
pthread_cancel(tid);
//關於pthread_cancel,有一點額外的說明,它是從外部終止子執行緒,
//子執行緒會在最近的取消點,退出執行緒,而在我們的**裡,最近的
//取消點肯定就是pthread_cond_wait()了。
pthread_join(tid, null);
printf("all done -- exiting\n");
return 0;
}
同步 互斥量
include include dword winapi fun 1 lpvoid p dword winapi fun 2 lpvoid p handle h mutex unsigned int counter 0 int main dword winapi fun 1 lpvoid p els...
執行緒同步 互斥量
下面以乙個簡單的多執行緒程式來演示如何使用互斥量來進行執行緒同步。在主線程中,我們建立子執行緒,並把陣列msg作為引數傳遞給子執行緒,然後主線程呼叫函式pthread mutex lock對互斥量加鎖,等待輸入,輸入完成後,呼叫函式pthread mutex unlock對互斥量解鎖,從而使執行緒函...
執行緒同步 互斥量
互斥量的使用 執行緒同步之互斥量 include include include include include include include using namespace std 全域性變數,兩個執行緒都可以修改,因此修改的時候需要加鎖 int g value 0 互斥量 pthread mu...