多线程同步,有没有不阻塞线程的同步方式?

qq79480765 2016-11-29 05:02:37
如题, 我现在使用的临界区CCriticalSection 的方式进行同步,当某一个线程使用临界区的时候,其他线程CCriticalSection .lock的时候会一直阻塞线程,其实如果给这个线程发消息就没办法处理,请问有没有不阻塞线程的方式,或者可以设置等待的时间,比如5秒得不到临界区就返回失败。另外CCriticalSection .lock()有个传入参数超时时间的方法,但看源码好像没有用到传入的超时时间
...全文
288 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2016-11-30
  • 打赏
  • 举报
回复
别用CCriticalSection了,换一种时间可控的同步方式
zgl7903 2016-11-30
  • 打赏
  • 举报
回复
EnterCriticalSection 会阻塞 TryEnterCriticalSection 就不会阻塞, 因此可以简单的用个循环,就能做超时退出处理
阿源是少年 2016-11-29
  • 打赏
  • 举报
回复
同步同步就是防止独占资源被多个线程同时访问而造成数据完整性被破坏,一个线程访问它的时候,其他线程要么等它空闲才能用要么做其他的事,那么“等”这种状态不是阻塞(在不考虑转去做其他逻辑的情况下,这时的逻辑与独占资源无关)会是什么?谁能告诉我?
Eleven 2016-11-29
  • 打赏
  • 举报
回复
可以用使用EVENT/Mutex,/Semaphore;内核对象 WaitForSingleObject()第二个参数可以传递wait时长
schlafenhamster 2016-11-29
  • 打赏
  • 举报
回复
qq79480765 2016-11-29
  • 打赏
  • 举报
回复
引用 4 楼 schlafenhamster 的回复:
使用 “Fiber“
能再详细说说嘛? 没百度到这个相关资料
schlafenhamster 2016-11-29
  • 打赏
  • 举报
回复
使用 “Fiber“
  • 打赏
  • 举报
回复
发消息也可以使线程同步,而且不会阻塞
赵4老师 2016-11-29
  • 打赏
  • 举报
回复
《Windows核心编程》
qq79480765 2016-11-29
  • 打赏
  • 举报
回复
自己顶一下,防沉

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧