欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
C++多線(xiàn)程的幾點(diǎn)
C++多線(xiàn)程的幾點(diǎn)

關(guān)于多線(xiàn)程:

1. C++中,創(chuàng )建線(xiàn)程有SDK的CreateThread,傳遞一個(gè)線(xiàn)程函數,它的定義為
    DWORD WINAPI funcproc(LPVOID lpParameter)。但我們盡量避免使用單純的C++庫,在VC++中    MFC封裝了CWinThread,我們既可以從CWinThread派生 出自己的線(xiàn)程類(lèi),也可以直接使用CWinThread作為宿主類(lèi),傳遞線(xiàn)程函數。線(xiàn)程函數的定義為UINT ThreadProc(LPVOID lpParam),我們使用AfxBeginThread來(lái)創(chuàng )建一個(gè)線(xiàn)程,該線(xiàn)程一旦啟動(dòng)后,將直接進(jìn)入ThreadProc,而且從該 ThreadProc返回時(shí),線(xiàn)程也將結束。我們設置dwCreateFlags參數的值為CREATE_SUSPENDED來(lái)使線(xiàn)程一創(chuàng )建后,直接掛 起。我們也可以顯式調用AfxEndThread來(lái)結束線(xiàn)程。
  1. 在多線(xiàn)程開(kāi)發(fā)中,最主要的麻煩是同步和資源沖突問(wèn)題,我們考慮以下環(huán)境,有線(xiàn)程讀取一個(gè)變量,而另一個(gè)線(xiàn)程正在同步刷新該變量,這時(shí) 就發(fā)生同步問(wèn)題。面對一個(gè)資源,我們有時(shí)需要限制同時(shí)訪(fǎng)問(wèn)該資源的個(gè)數。我們有時(shí)只能允許只有一個(gè)線(xiàn)程訪(fǎng)問(wèn)一個(gè)資源,例如打印機。我們還有些時(shí)候需要讓線(xiàn) 程等待一個(gè)信號的出現,例如串口采集后臺處理線(xiàn)程。
    1. CEvent:表示一個(gè)“事件”——一個(gè)允許一個(gè)線(xiàn)程通知另一個(gè)線(xiàn)程事件已經(jīng)發(fā)生的同步對象。當應用程序必須等到發(fā)生某事才能訪(fǎng)問(wèn)資源的時(shí)候,我們應該使用這個(gè)類(lèi)。
      在一個(gè)處理線(xiàn)程中,用CEvent::SetEvent,然后其他類(lèi)使用CSingleLock::Lock等待。
    2. CSemaphore:表示一個(gè)“信號燈”——一個(gè)允許一個(gè)或多個(gè)進(jìn)程中的有限多個(gè)線(xiàn)程訪(fǎng)問(wèn)一個(gè)資源的同步對象。當限制同一應用程序內(1到n個(gè))線(xiàn)程可以同時(shí)訪(fǎng)問(wèn)此資源時(shí),我們應該使用這個(gè)類(lèi)。
      CSemaphore semaphore(3,3,”semaphore”);//參數1:初始資源數;2:最大資源數;3:信號量的名稱(chēng).
      semaphore.Lock();
      semaphore.Unlock();
      若已經(jīng)達到最大訪(fǎng)問(wèn)客戶(hù)數,則下一個(gè)請求鎖定客戶(hù)將會(huì )阻塞等待。
    3. CMutex:表示一個(gè)“互斥體”——一個(gè)允許一個(gè)線(xiàn)程以互相排斥的方式訪(fǎng)問(wèn)一個(gè)資源的同步對象。當可以有一個(gè)以上的應用程序使用此資源,使用這個(gè)類(lèi)。
      CMutex mutex(FALSE,”MUTEX”);//第一個(gè)參數:互斥量初始是鎖定還是未鎖定;第二個(gè)參數:互斥量名稱(chēng),用于標識.
      mutex.Lock();
      mutex.Unlock();
    4. CCriticalSection:表示一個(gè)“臨界區”——一個(gè)允許一個(gè)線(xiàn)程同時(shí)訪(fǎng)問(wèn)一個(gè)資源或代碼段的同步對象。相對與CMutex,則使用這個(gè)類(lèi),與上面的區別唯一在于上面可以允許另一個(gè)進(jìn)程使用該資源,兩者相同在于進(jìn)程內線(xiàn)程互斥。
    5. CMultiLock:表示多線(xiàn)程程序中用于控制對多個(gè)資源的訪(fǎng)問(wèn)的訪(fǎng)問(wèn)控制機制。若其中有一個(gè)資源沒(méi)釋放,則等待。
    6. CSingleLock:表示多線(xiàn)程程序中用于控制對一個(gè)資源的訪(fǎng)問(wèn)的訪(fǎng)問(wèn)控制機制。CSingleLock singleLock(&m_CritSection);
      singleLock.Lock();
      singleLock.Unlock();
      m_CritSection為同步類(lèi),根據不同的需要采用不同的同步類(lèi),如CEvent、CMutex、CCriticalSection。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
c++多線(xiàn)程同步使用的對象
Linux的信號量(semaphore)與互斥(mutex)
淺議Visual C++多線(xiàn)程設計
C#線(xiàn)程同步(5)- 信號量 Semaphore
起底多線(xiàn)程同步鎖(iOS)
線(xiàn)程學(xué)習筆記
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久