TC官方合作论坛

标题: 没有互斥锁的多线程就不是真正的多线程~问题已解决! [打印本页]

作者: 九先生    时间: 2012-2-14 08:29
标题: 没有互斥锁的多线程就不是真正的多线程~问题已解决!
互斥锁的功能打个比方来说:好比一节火车上只有一个厕所,当同时有几个乘客要上厕所要怎么解决?打群架?胜者入厕?NO!!应该是这样的,按序进去,先进去的人转动门把手显示“有人”,方便完了出来在转回“无人”,这样门外的人只要看门牌就知道应该是等待还是进去,这样就实现文明入厕自动排序~
多线程的脚本也是一样的道理,当多个线程同时要读取一个进程的内存数据或者同时调用鼠标移动,如果没有协调好就会起冲突,脚本就不能正常运行,所以没有互斥锁的多线程就不是真正的多线程!按键就有好几个具有互斥锁功能的插件,用起来很方便,希望版主能增加这样的功能~!看好TC,作者加油!!感谢论坛各位大神的指点问题已经解决~原来TC里的临界区就是互斥锁的功能!1

作者: 九先生    时间: 2012-2-14 08:36
我来转发一下以前按键论坛一位朋友发的一个互斥锁插件的文章吧,只可惜那插件好像不支持COM接口调用,我在TC试过。。
按键既然支持多线程,为什么就不给一套同步机制呢!反正我没发现,这里写了一个简单的互斥锁插件,应急用用吧.

jcqm.rar (6.88 KB, 下载次数: 249)
2010-5-12 13:53 上传下载次数: 249

由于随手在我学习用的插件工程里加的代码,所以里面还有一些其他东西,见谅!测试代码如下:

DimEnv mux
mux = Plugin.jcqm.jMutexInit
BeginThread te2
Plugin.jcqm.jMutexLock mux
For 10
    TracePrint "主线程"
    Delay 1000
Next
Plugin.jcqm.jMutexUnlock mux
Delay 99999
EndScript
//////////////////////////////////
Function te2
    Plugin.jcqm.jMutexLock mux
    For 10
        TracePrint "子线程"
        Delay 1000
    Next
    Plugin.jcqm.jMutexUnlock mux
    Delay 99999
End Function
Sub OnScriptExit()
    Plugin.jcqm.jMutexDestroy mux
End Sub
作者: TC    时间: 2012-2-14 09:01
:) 朋友,有互斥锁哦,TC
作者: 九先生    时间: 2012-2-14 09:08
回复 3楼match的帖子

版主帮忙给个链接啊  教程里没看到~
作者: 红雨    时间: 2012-2-14 09:32
互斥锁这么高科技,在哪里怎么用呢TC
作者: 九先生    时间: 2012-2-14 10:59
:) 朋友,有互斥锁哦,TC
match 发表于 2012-2-14 9:01:29



急切等待回复!!!TC脚本就卡在这了


作者: 三猫大叔    时间: 2012-2-14 11:12
TC是有互斥锁的。就是临界区。
作者: 九先生    时间: 2012-2-14 11:30
回复 7楼三猫大叔的帖子

看看了下帮助文档没找到临界区的调用说明啊~麻烦版主指点下!!
作者: lyf1314    时间: 2012-2-14 12:11
内置api,不需要调用- -
作者: 小风子    时间: 2012-2-14 12:27
后台鼠标还存在互斥么?
作者: qq1188    时间: 2012-2-14 15:49
高手呀 我还都没高明白呢 都看的乱了套了
作者: woodfish    时间: 2012-2-14 16:57
这个可以有
作者: 超自然    时间: 2012-2-14 17:50
叫临界,在线程区找
作者: huanjian    时间: 2012-2-14 18:02
新手帮你顶一下
作者: 清风流水2060    时间: 2012-2-19 01:12
学习了
作者: popo014    时间: 2012-3-16 16:23
这个真的不是很清楚 我拿点积分吧
作者: dzh    时间: 2012-3-21 09:49
谢谢学习
作者: edolie    时间: 2013-2-1 15:09
强人贴,原来临界区是这么用的...
作者: qsmoon    时间: 2013-7-16 18:20
路过




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1