找回密码
 加入
搜索
查看: 3074|回复: 2

[AU3基础] 多进程通讯udf的错误

[复制链接]
发表于 2011-9-19 01:21:20 | 显示全部楼层 |阅读模式
最近研究了下其他语言的多线程,再回过头来看coproc.au3的多进程原理,发现原来多进程之间的通讯是通过读写注册表来实现的,于是写下了如下测试代码,发现udf有bug,应该将_SuperGlobalget函数里的BinaryToString ("0x" & $vTmp)改为BinaryToString ($vTmp)方能正确显示共享数据,如下代码测试成功。

#include<coproc.au3>
_SuperGlobalSet("多进程通讯",1)
_coproc("prochl")
For $i=1 To 100
        Sleep(1000)
        ToolTip(BinaryToString(_SuperGlobalget("多进程通讯")))
Next
Func prochl()
        For $i=1 To 100
                _SuperGlobalSet("多进程通讯",$i)
                Sleep(3000)
        Next
EndFunc

Func _SuperGlobalGet($sName, $fOption = Default, $sRegistryBase = Default)
        Local $vTmp
        If $fOption = "" Or $fOption = Default Then $fOption = False
        If $sRegistryBase = Default Then $sRegistryBase = $gs_SuperGlobalRegistryBase
        $vTmp = RegRead($sRegistryBase, $sName)
        If @error Then Return SetError(1, 0, "") ; Registry Problem
        If $fOption Then
                _SuperGlobalSet($sName)
                If @error Then SetError(2)
        EndIf
        Return BinaryToString ($vTmp);BinaryToString ("0x" & $vTmp)
EndFunc   ;==>_SuperGlobalGet
发表于 2011-9-20 17:13:50 | 显示全部楼层
这个很有用之前就用过coproc.au3确实不能通讯
发表于 2019-10-28 14:20:25 | 显示全部楼层
有点高深,目前级别表示理解欠缺,努力中!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-16 06:46 , Processed in 0.102932 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表