进程间通信(IPC)-使用互斥量

竞态条件:当两个或更多的实体访问修改某共享资源时,最终的结果取决于进程的执行顺序。

避免竞态条件:互质,即一种能够独占访问共享对象的机制

临界区:程序中能够访问共享内存的部分

为了避免竞态条件,必须确保一次或者某一时刻只能有一个进程进入临界区。为了使用共享数据,必须处理好4个条件:

       1.不允许同时有两个进程在临界区内;

       2.不得对CPU的速度或者数量进行假设;

       3.在临界区外运行的进程不得阻碍其他进程;

       4.不得有任何进程处于永远等待进入临界区。

常用函数:

1.CreateMutex()

HANDLE CreateMutex( 
  LPSECURITY_ATTRIBUTES lpMutexAttributes, 
  BOOL bInitialOwner, 
  LPCTSTR lpName 
);

该函数用以创建一个已命名或未命名的互斥对象。

lpMutexAttributes

[in]忽略。必须为NULL。

bInitialOwner

[in] Boolean,指定互斥对象的初始所有者。如果此值为TRUE且调用者创建了互斥锁,则调用线程将获取互斥锁对象的所有权。否则,调用线程不会获得互斥锁的所有权。要确定调用者是否创建了互斥锁,请参阅“返回值”部分。

lpName

[in]指向以空字符结尾的字符串的长指针,指定互斥锁对象的名称。该名称仅限于MAX_PATH字符,并且可以包含除反斜杠路径分隔符(\)之外的任何字符。名称比较区分大小写。

如果lpName与现有命名互斥对象的名称匹配,则忽略bInitialOwner参数,因为它已由创建过程设置。

如果lpName为NULL,则创建没有名称的互斥对象。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值