精易论坛

标题: 线程安全之临界锁进阶玩法 [打印本页]

作者: YouCanYouUp    时间: 2018-5-15 10:17
标题: 线程安全之临界锁进阶玩法
感觉很多人对多线程感兴趣,今天就发一个临界锁的源码,当然不是现在很多人用的那种。
这个临界锁是我封装好的一个类,除了基本的临界锁功能,还加入了一个条件变量,这个应该没多少人用过,至少我没看到有人用过。

下面说一下条件变量。关于条件变量的定义我就不啰嗦了,大家自己去百度一下就知道了,这里主要说一下条件变量的作用。
假如有多个线程同时操作一个变量,一条线程读,一条线程写,读取线程需要等待写入线程操作完成且这个变量值与某个已知值相等的时候做一些操作,这种情况下就可以用条件变量来控制线程,同时可以保证线程安全。

比如,你要写一个线程池,一般线程池在池中线程不够用的时候会自动创建新线程(当然前提是当前线程数小于设定的最大值),但创建一条线程到线程体开始执行需要一定的时间(虽然很短),你必须等待新线程创建完毕才能在当前线程中返回(当前方法),否则就不能精确控制线程数量了。那么问题来了,你在一条线程中创建另一条线程,如何才能知道另一条线程已经开始工作了呢?答案当然是使用条件变量了,虽然也可以用其他方法,比如在当前线程中循环判断线程数量是否已增加(在新线程执行体中会递增当前线程数),但使用条件变量无疑是更好的做法。

至于条件变量的用法,源码中有示例,这里就不多说了。

如有需要优化程序性能的朋友可以找我,QQ 1107309266(不免费)。
遇到 BUG 解决不了的也可以联系我,但需要提供源码(方便调试)。


CriticalSection.e (6.08 KB, 下载次数: 89)

作者: 火威网络    时间: 2018-5-15 10:23
瞧一瞧 看一看
作者: 指尖流淌    时间: 2018-5-15 10:36
谢谢分享,看看了解下
作者: Hwak    时间: 2018-5-15 10:54
就是临界进入退出 。。。
作者: fnp902003    时间: 2018-5-15 12:54
支持一个~~~~~~~~~~~~
作者: qq420345437    时间: 2018-5-16 11:37
但愿吧。。。。。
作者: anim510    时间: 2018-5-16 14:22
临界进入退出 。
作者: 79961565    时间: 2021-2-21 01:30
临界进入退出
作者: 515667395    时间: 2024-6-23 20:05
多谢分享
作者: fangweipeng    时间: 2024-12-1 12:30
临界进入退出
作者: chinacoold    时间: 2024-12-13 11:32
学习一下,崩溃了好久了




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4