关键段

作者: 7bfedbe4863a | 来源:发表于2017-12-29 00:39 被阅读0次

CriticalSection

以原子方式访问。在执行之前独占对一些共享资源的访问权。

-头文件:
Windoes.h
process.h
-定义:
CRITICAL_SECTION cs;
-初始化:
VOID InitializeCriticalSection(&cs);
-删除:
VOID DeleteCriticalSection(&cs);
-进入关键段
VOID EnterCriticalSection(&cs);
BOOL TryEnterCriticalSection(&cs);//这个函数不会等待,如果进不去,就继续向下执行
-离开关键段
VOID LeaveCriticalSection(&cs);

一个小例子

借还书

main函数调用,启动

void OnActive()
{
    HANDLE hThreadRead;
    HANDLE hThreadWrite;

    DWORD dwThreadIDRead,deThreadIDWrite;

    hThreadRead = (HANDLE)_beginthreadex(NULL,0,ThreadFuncRead,NULL,0,(unsigned int*)&dwThreadIDRead);
    hThreadWrite = (HANDLE)_beginthreadex(NULL,0,ThreadFuncWrite,NULL,0,(unsigned int *)&deThreadIDWrite);

    InitializeCriticalSection(&cs);

    Sleep(1000);

    CloseHandle(hThreadRead);
    CloseHandle(hThreadWrite);

    DeleteCriticalSection(&cs);

}

借书操作

int bookNumbers = 10;
CRITICAL_SECTION cs;

unsigned __stdcall ThreadFuncRead(void*)
{
    while(1)
    //for(int i = 0;i<10;i++)
    {
        EnterCriticalSection(&cs);
        if (bookNumbers>0)
        {
            printf("借走一本书,剩余数量:%d\n",--bookNumbers);
            LeaveCriticalSection(&cs);
        }
        else
        {
            LeaveCriticalSection(&cs);
            break;
        }
    }
    return 1;
}

还书操作

unsigned __stdcall ThreadFuncWrite(void*)
{
    while(1)
    //for(int i = 0;i<10;i++)
    {
        EnterCriticalSection(&cs);
        if (bookNumbers<10)
        {
            printf("还回一本书,剩余数量:%d\n",++bookNumbers);
            LeaveCriticalSection(&cs);
        }
        else
        {
            LeaveCriticalSection(&cs);
            break;
        }
    }
    return 1;
    
}

相关文章

  • 关键段

    CriticalSection 以原子方式访问。在执行之前独占对一些共享资源的访问权。 -头文件:Windoes....

  • 《樊登读书法》D3—读书笔记

    读书进阶实践: ·找关键:每句关键词➡️每段关键句(下定义/ 严重后果/ 意料之外)➡️每节关键段➡️每章关键节➡...

  • 随笔一则

    “关键语句” 今天继续复习语文园地,讲到“关键语句”,关键语句能帮助我们概括一段话的大意,它在一段话中的位置不同。...

  • 关键词优化段佳龙

    关键词如何优化 关键词优化是指把网站里面的关键词进行选词和排版的优化达到优化网站排名的效果。搜索引擎中相关关键词的...

  • 随机渐变背景色

    说明 随机颜色 随机渐变类型 关键代码段 效果 demo源码

  • 刺激与回应之间存在一段距离,如何利用这段距离是成长和幸福的关键?

    刺激与回应之间存在一段距离,如何利用这段距离是成长和幸福的关键? 刺激与回应之间存在一段距离,成长和幸福的关键就在...

  • 口误

    刚读到一段话是确定一段关系很简单,关键是怎么维系与责任感……我硬生生读成了确定一段关系很简单,关键是怎么推卸责任感...

  • 眼睛血管的更换

    作者:清新聚能 2019.3.27 星期三 天 晴 宇宙 我们的内在,也到了关键的关键,最近一段时间...

  • “粘牢”结合部,消除溜逸隐患

    为确保春运安全,全面提高机车整备质量,梅河口机务段梅河整备车间紧紧扭住作业关键点、关键环节、关键时段不放松,以强化...

  • 高效阅读第二阶段:单点突然

    接着讲高效阅读。 第2阶段(单点突破):把第1阶段找出的24个关键词再进一步细化,在书中找出此24个关键词的解释。...

网友评论

      本文标题:关键段

      本文链接:https://www.haomeiwen.com/subject/xsvbgxtx.html