<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    jinfeng_wang

    G-G-S,D-D-U!

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      400 Posts :: 0 Stories :: 296 Comments :: 0 Trackbacks

    Using Mutex Objects

    You can use a mutex object to protect a shared resource from simultaneous access by multiple threads or processes. Each thread must wait for ownership of the mutex before it can execute the code that accesses the shared resource. For example, if several threads share access to a database, the threads can use a mutex object to permit only one thread at a time to write to the database.

    In the following example, a process uses the CreateMutex function to create a named mutex object or open a handle to an existing mutex object.

    HANDLE hMutex;
    // Create a mutex with no initial owner.
    hMutex = CreateMutex(
    NULL,                       // no security attributes
    FALSE,                      // initially not owned
    "MutexToProtectDatabase");  // name of mutex
    if (hMutex == NULL)
    {
    // Check for error.
    }

    When a thread of this process writes to the database, as in the next example, it first requests ownership of the mutex. If it gets ownership, the thread writes to the database and then releases its ownership.

    The example uses structured exception-handling syntax to ensure that the thread properly releases the mutex object. The __finally block of code is executed no matter how the __try block terminates (unless the __try block includes a call to the TerminateThread function). This prevents the mutex object from being abandoned inadvertently.

    BOOL FunctionToWriteToDatabase(HANDLE hMutex)
    {
    DWORD dwWaitResult;
    // Request ownership of mutex.
    dwWaitResult = WaitForSingleObject(
    hMutex,   // handle to mutex
    5000L);   // five-second time-out interval
    switch (dwWaitResult)
    {
    // The thread got mutex ownership.
    case WAIT_OBJECT_0:
    __try {
    // Write to the database.
    }
    __finally {
    // Release ownership of the mutex object.
    if (! ReleaseMutex(hMutex)) {
    // Deal with error.
    }
    break;
    }
    // Cannot get mutex ownership due to time-out.
    case WAIT_TIMEOUT:
    return FALSE;
    // Got ownership of the abandoned mutex object.
    case WAIT_ABANDONED:
    return FALSE;
    }
    return TRUE;
    }
    posted on 2007-08-17 16:13 jinfeng_wang 閱讀(661) 評論(2)  編輯  收藏 所屬分類: cppZZ

    評論

    # re: Using Mutex Objects (zz) 2007-11-15 18:24 ZHANG/WEI
    都是英文,有些看不清楚哦
    能不能換成中文啊,這樣好像好點,對嗎?  回復  更多評論
      

    # re: Using Mutex Objects (zz) 2008-01-19 16:45 情深深鮮花禮品網
    英文的才原版。  回復  更多評論
      

    主站蜘蛛池模板: 国产成人高清精品免费软件| 免费av欧美国产在钱| 亚洲色婷婷综合开心网| 亚洲精品午夜国产VA久久成人| 亚洲午夜精品国产电影在线观看| 国产精品亚洲精品日韩动图| 日韩伦理片电影在线免费观看| 亚洲精品无码专区在线在线播放| 91在线免费观看| 亚洲一区二区三区高清| 人妖系列免费网站观看| 国产黄色免费网站| 精品亚洲永久免费精品| 四虎国产精品永久免费网址| gogo全球高清大胆亚洲| 亚洲一区二区三区在线网站| 大地资源二在线观看免费高清| 亚洲欧美日韩中文二区| 91精品国产免费久久国语蜜臀| 在线精品亚洲一区二区三区| 美女在线视频观看影院免费天天看| 久久久无码精品亚洲日韩蜜臀浪潮 | 免费视频一区二区| 亚洲av无码片区一区二区三区| 国产精品嫩草影院免费| ssswww日本免费网站片| 久久久久亚洲av无码专区导航 | 亚洲av日韩av无码| 一本到卡二卡三卡免费高| 亚洲av一综合av一区| 中文字幕一区二区三区免费视频| 亚洲福利视频导航| 免费观看的毛片手机视频| 国产99久久久国产精免费| 亚洲理论在线观看| 亚洲国产精品免费视频| 亚洲国产高清国产拍精品| 亚洲AV无码专区国产乱码4SE| 无码国产精品一区二区免费I6| 无人视频在线观看免费播放影院| 少妇中文字幕乱码亚洲影视|