|
10精币
多线程总是运行一会儿就崩溃了 求大神解决!
.版本 2
.支持库 EThread
.子程序 工作线程
.局部变量 Handle, 整数型, , "0"
.局部变量 txt, 整数型, , "0"
.局部变量 len, 整数型
线程数 = 到整数 (编辑框_线程数.内容)
len = 到数值 (编辑框_总数.内容)
任务总数 = len
Semaphore = CreateSemaphoreA (0, 线程数, 线程数, “work”) ' 打开信号量,返回信号量句柄
重定义数组 (txt, 假, len) ' 重新定义txt数组的数目等于len,建立内存文件
重定义数组 (Handle, 假, len) ' 重新定义Handle的数目等于len接受线程句柄
全B = 1
.判断循环首 (处理项 < len)
.循环判断首 ()
WaitForSingleObject (Semaphore, -1)
处理项 = 处理项 + 1
z线程数 = z线程数 + 1
启动线程 (&登录, 处理项, Handle [处理项])
CloseHandle (Handle [处理项]) ' 释放资源
.如果真 (处理项 ≥ len)
跳出循环 ()
.如果真结束
.判断循环首 (全B = 0)
程序_延时 (300)
.判断循环尾 ()
.循环判断尾 (z线程数 ≥ 线程数)
.判断循环尾 ()
.循环判断首 ()
程序_延时 (300)
.循环判断尾 (z线程数 > 0)
处理项 = 0
CloseHandle (句柄)
CloseHandle (Semaphore) ' 关闭信号量句柄
信息框 (“OK”, 0, , )
|
最佳答案
查看完整内容
对多线程理解太片面导致的,多线程共享资源,并发冲突,导致的内存崩溃
|