精易论坛

标题: 全局数组 多线程访问 [打印本页]

作者: SYzenghao    时间: 2023-8-19 17:59
标题: 全局数组 多线程访问
随手写写,如何使用多线程来干事情,需要注意的是,这里只是对数组进行了创建临界区,如果在“处理相关数据”时,要用到其他数据,那么对其他数据也就需要做临界区数据保护。

自我感觉EnterCriticalSection稳定且相应快;使用该临界区是只针对本进程的数据访问,不进入内核,所以相应速度很快

通过对代码的优化,多利用多核心多线程的CPU,不然你的软件会卡卡的。


Tips:EnterCriticalSection(进入临界区)后要及时LeaveCriticalSection (退出临界区),如果“处理相关数据”时间太长了的话,会影响到其他的线程,造成还不如单线程来得快...




  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
变量名类 型数组备 注
g_static_critical线程许可证  
g_data整数型0可以使用自定义数据类型

子程序名返回值类型公开备 注
__启动窗口_创建完毕  
' // 初始化临界区
InitializeCriticalSection (g_static_critical)
' //启动工作线程,一般情况下启动数量为CPU支持的线程数 *2
计次循环首 (10, )
启动线程 (&WorkerThread, , )
计次循环尾 ()
子程序名返回值类型公开备 注
WorkerThread 工作线程
变量名类 型静态数组备 注
i整数型 
m_data整数型 
判断循环首 ()
EnterCriticalSection (g_static_critical)  ' //进入临界区
如果 (取数组成员数 (g_data) > 0)
m_data = g_data [1]
删除成员 (g_data, 1, 1)
LeaveCriticalSection (g_static_critical)  ' //退出临界区
' //处理相关数据
调试输出 (m_data)

LeaveCriticalSection (g_static_critical)  ' //退出临界区
Sleep (10)  ' //无任务待命

判断循环尾 ()
子程序名返回值类型公开备 注
_按钮1_被单击 拟投递一个任务
变量名类 型静态数组备 注
i整数型 
EnterCriticalSection (g_static_critical)  ' //进入临界区
i = i + 1
加入成员 (g_data, i)
LeaveCriticalSection (g_static_critical)  ' //退出临界区



i支持库列表   支持库注释   
EThread多线程支持库
spec特殊功能支持库


作者: wuqingg    时间: 2023-8-19 18:12
好思路~~~~~~~~~~~
作者: 君九    时间: 2023-8-19 20:13
感谢分享
作者: 孤帆远矣影    时间: 2023-8-19 21:12

感谢分享
作者: 小了白了兔    时间: 2023-8-19 21:34
重复造轮子
作者: alpc    时间: 2023-8-19 22:32
这个跟许可是否差不多
作者: jiaxiaotong    时间: 2023-8-19 23:13
不明真相的吃瓜群众路过~围观
作者: ZHuanR    时间: 2023-8-20 02:11
新技能已get√
作者: futiem    时间: 2023-8-20 05:50
这里只是对数组进行了创建临界区
作者: futiem    时间: 2023-8-20 06:00
全局数组 多线程访问
作者: 圆圈    时间: 2023-8-20 07:38
看到全英文头就大
作者: 396384183    时间: 2023-8-20 08:23
新技能已get√
作者: 一指温柔    时间: 2023-8-20 08:41
感谢分享
作者: 杨明煜    时间: 2023-8-20 09:05
感谢分享.........
作者: yangdoudou    时间: 2023-8-20 09:57
此处应该有鼓励~
作者: ytc    时间: 2023-8-20 10:22
相当于创建了线程池,10个线程等待任务,按钮点一下,全局数组增加一个任务!10个线程抢任务,没有的抢到的一直在等待
作者: 422768237    时间: 2023-8-20 12:00
6666666666666666666
作者: qqmqqg    时间: 2023-8-20 16:25
谢谢分享
作者: 笨来无一悟    时间: 2023-8-21 04:14
多线程操作数组从来不用许可证 都说有机会触发报错 我一次都没有遇到过 测试下来只要不是操作同一个成员就不会报错 有可能操作同一个成员的时候才用许可区
作者: ttai000    时间: 2023-8-21 08:48
感谢分享.........
作者: 一指温柔    时间: 2023-8-21 09:14
谢谢分享
作者: renjianhong48we    时间: 2023-8-21 10:13
感谢分享
作者: 海杰易之旅    时间: 2023-8-21 10:56
大佬厉害,支持一下{:3_41:}
作者: tw1    时间: 2023-8-21 12:39
感谢分享
作者: bianyuan456    时间: 2023-8-21 17:14
已经顶贴,感谢您对论坛的支持!
作者: 蒙顺童    时间: 2023-8-22 14:31
已经顶贴,感谢您对论坛的支持!
作者: zhjihu2004    时间: 2023-8-22 15:26

已经顶贴,感谢您对论坛的支持!
作者: shuya1    时间: 2023-8-24 18:46
已经顶贴,感谢您对论坛的支持!
作者: 胖子葛格    时间: 2023-8-29 11:48
感谢大神分享~!
作者: pipicool    时间: 2023-9-1 04:14
学习一下
作者: caskywz    时间: 2023-9-21 20:58
        感谢分享,很给力!~
作者: yuzhong    时间: 2023-10-9 08:55
感谢分享




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