Windows下多任务同步机制简析

本文简析Windows操作系统中多任务同步的四种机制:临界区、互斥量、信号量和事件。通过实例展示了它们的使用方法,如初始化、操作和关闭,并探讨了它们在进程间同步和资源管理中的应用。
摘要由CSDN通过智能技术生成

    多作务操作系统之间各任务在使用同一资源时会发生冲突,包括读写的一致性问题,唯一性外设等

这时需要通过同步来使资源在同一时刻被合理的占用。

    WINDOWS下可以通过临界区(CRITICAL_SECTION)、互斥量(MUTEX)、信号量(SEMAPHORE),事件(EVENT)

    比较

     

  临界区 互斥量 信号量 事件
跨进程
速度


1 临界区: 是一种最简单的同步对象,它只可以在同一进程内部使用。它的作用是保证只有一个线程可以申请到该对象

操作函数:

VOID InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection);

VOID DeleteCriticalSection(LPCRITICAL_SECTION lpCriticalSection)

VOID EnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection);

BOOL TryEnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection);

VOID LeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection);


int iCounter =0;

CRITICAL_SECTION criCounter;

DWORD threadA(void* pD)

{

    int iID=(int)pD;

    HANDLE hCounterIn=OpenMutex(MUTEX_ALL_ACCESS,FALSE,"sample");

    for (int i=0;i<8;i++)

    {

        EnterCriticalSection(&criCounter);

        int iCopy=iCounter;

        Sleep(100);

        iCounter=iCopy+1;

        printf("\t\tthread %d : %d\n",iID,iCounter);

        LeaveCriticalSection(&criCounter);

    }

    return 0;

}


// in main function

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值