【线程同步系列3】基于关键代码段的VC++多线程同步及孙鑫代码在VS2017、多核CPU上的问题

本文探讨了在VC++中使用临界区进行多线程同步的问题,分析了孙鑫代码在VS2017和多核CPU环境下可能存在的线程竞争现象,指出由于While(TRUE)循环可能导致的一个线程持续占有临界区。解决方案是在LeaveCriticalSection()后加入Sleep()函数,让线程等待,以确保其他线程有机会获取资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关键代码段

关键代码段(临界区)工作在用户方式下。
关键代码段(临界区)是指一个小代码段,在代码能够执行前,它必须独占对某些资源的访问权。

void EnterCriticalSection(
  LPCRITICAL_SECTION lpCriticalSection
);

该函数等待指定临界区对象的所有权,当调用线程被赋予所有权时,函数返回;如果调用线程没有等待到临界区对象的所有权,该函数一直等待,从而导致线程一直等待!

参数一指向临界区对象的指针(首先要建立一个电话亭),初始化临界区对象用

void InitializeCriticalSection(
  LPCRITIC
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

codersnote

对学生党 赞赏是鼓励也是鞭策!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值