色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

Hi,歡迎來到嵌入式培訓(xùn)高端品牌 - 華清遠見教育科技集團<北京總部官網(wǎng)>,專注嵌入式工程師培養(yǎng)15年!
當(dāng)前位置: > 華清遠見教育科技集團 > 嵌入式學(xué)習(xí) > 講師博文 > 線程解析(三)
線程解析(三)
時間:2016-12-30作者:華清遠見

前面我們說了線程的創(chuàng)建和撤銷,這里我們說一下線程間的同步的問題。

當(dāng)同一個進程中存在多個線程的時候,多個線程共享相同的內(nèi)存,確保每個線程能夠看到一致的數(shù)據(jù)視圖,如果每個線程中都不會讀取或修改共同享有的變量,就不會存在一致性的問題,同樣如果共享變量時只讀的也就不會存在這個問題。但是,當(dāng)某個線程可一個修改變量,而其他的線程去讀取或修改這個變量的時候,就需要進行線程間的同步,確保他們訪問變量的內(nèi)容時不會訪問到無效的數(shù)據(jù)。

這里介紹一種實現(xiàn)同步的方法:互斥量

互斥鎖本質(zhì)上是一把鎖,在訪問共享資源的時候?qū)コ饬窟M行加鎖,訪問結(jié)束后解鎖。在這里我們說一下如何去操作互斥鎖。

1、 創(chuàng)建和撤銷

互斥量用pthread_mutex_t數(shù)據(jù)類型來表示,在使用之前必須對其進行初始化,用完之后釋放內(nèi)存。互斥量初始化可以用PTHREAD_MUTEX_INITIALIZER來初始化(靜態(tài)初始化),亦可以使用pthread_mutex_init函數(shù)來實現(xiàn),這種方法動態(tài)的為互斥量分配內(nèi)存,使用后必須使用pthread_mutex_destroy來釋放內(nèi)存單元。下面是這些函數(shù)的原型:
        pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
        int pthread_mutex_init(pthread_mutex_t *restrict mutex,
        const pthread_mutexattr_t *restrict attr);
        int pthread_mutex_destroy(pthread_mutex_t *mutex);

2、 鎖操作

鎖操作主要包括加鎖pthread_mutex_lock()、解鎖pthread_mutex_unlock()和測試鎖pthread_mutex_trylock()三個。通過pthread_mutex_lock對互斥量加鎖,這里需要獲得鎖,如果無法獲得鎖則調(diào)用線程將阻塞到其他線程調(diào)用pthread_mutex_unlock對互斥量解鎖。
        int pthread_mutex_lock(pthread_mutex_t *mutex);
        int pthread_mutex_trylock(pthread_mutex_t *mutex);
        int pthread_mutex_unlock(pthread_mutex_t *mutex);

如果線程不希望被阻塞,則可以調(diào)用pthread_mutex_trylock嘗試對互斥量進行加鎖,當(dāng)互斥量沒有被加鎖,則函數(shù)返回0,并鎖住互斥量,否則會失敗,返回EBUSY.

3、 示例

下面我們用一個例程說明一下這些函數(shù)的使用。

#include <stdio.h>
        #include <pthread.h>

pthread_mutex_t mutex;

void *thread_a(void *arg)
        {
                printf("thread a enter\n");
                pthread_mutex_lock(&mutex);
                printf("mutex lock\n");
                sleep(10);
                pthread_mutex_unlock(&mutex);
                printf("mutex unlock\n");
        }

void *thread_b(void *arg)
        {
                printf("thread b enter\n");
                while(pthread_mutex_trylock(&mutex))
                {
                        printf("pthread trylock\n");
                        sleep(1);
                }
                printf("mutex lock\n");
                pthread_mutex_unlock(&mutex);
                printf("mutex unlock\n");
        }

int main(int argc, char **argv)
        {
                pthread_t tid_a,tid_b;
                int err;

        if(pthread_mutex_init(&mutex, NULL) != 0)
                {
                        perror("pthread_mutex_init");
                }

        err = pthread_create(&tid_a,NULL,thread_a,NULL);
                if(err < 0)
                {
                        perror("pthread_create thread_a");
                }
                sleep(1);
                err = pthread_create(&tid_b,NULL,thread_b,NULL);
                if(err < 0)
                {
                        perror("pthread_create thread_a");
                }

        sleep(20);
                printf("the main close\n");
                return 0;
        }

結(jié)果:
        thread a enter
        mutex lock
        thread b enter
        pthread trylock
        pthread trylock
        pthread trylock
        pthread trylock
        pthread trylock
        pthread trylock
        pthread trylock
        pthread trylock
        pthread trylock
        mutex unlock
        mutex lock
        mutex unlock
        the main close

由這里的結(jié)果可以看出mutex的用處及幾個相關(guān)函數(shù)的使用方法。

 
發(fā)表評論
評論列表(網(wǎng)友評論僅供網(wǎng)友表達個人看法,并不表明本站同意其觀點或證實其描述)
主站蜘蛛池模板: 久久国产福利播放 | 女人毛片免费观看 | 亚洲中文有码字幕日本 | 百性阁综合另类 | 亚洲自偷自偷在线成人网址 | 少妇激情A∨一区二区三区 亚洲国产成人AV片在线播放 | 狠狠色噜噜狠狠狠777米奇小说 | 国产乱子影视频上线免费观看 | 三年片免费观看大全国语第5集 | 丰满年轻岳欲乱中文字幕 | 西西4444WWW大胆无码 | 欧洲av一区 | 成人精品视频一区二区三区 | 欧美日本一二三区 | 欧美日韩精品一区二区在线视频 | 成人精品国产区在线观看 | 亚洲Av永久无码精品无码流畅 | 国产精品久久人妻无码免费看 | 人人爽人人爽人人 | 妺妺窝人体色WWW聚色窝 | 日本免费高清色视频在线观看 | 中文字幕日韩精品一区二区三区 | 精品无码一区二区三区不卡 | BBW极度另类孕妇 | 亚洲成A人片在线观看无码 久久久久久无码精品无码国产人妻丝瓜 | 2021亚洲卡一卡二新区入口 | 亚洲国产婷婷综合在线精品 | 国产hd老太婆中国老太60 | 2021国产精品国产精华 | 国产无套内射又大又猛又粗又爽 | 女人色极品影院 | 裸体黑色丝袜18禁网站无风险 | 亚洲乱码一二三四区 | 在线观看人与动牲交视频 | 男男无码sm调教gv资源 | 亚洲色大成网站WWW永久男同 | 一级日韩毛片 | 91在线最新 | 中文字幕在线亚洲精品 | 无遮挡激情视频国产在线观看 | 黑人把女人弄到高潮a片 |