能否在一个程序中同时调用两个子函数
本帖最后由 candy_王子 于 2012-5-17 15:12 编辑在一个程序中调用子函数,通常顺序都是等一个函数执行完之后再再执行下一个函数。有没有办法能让两个子函数同时运行? 程序同一时刻只能做一件事 回复 1# candy_王子
这是属于多线程方面的知识, 楼主自行搜索吧, 论坛已经有很多这方面的讨论. 子程序嵌套子程序算不算啊? 回复 3# user3000
好吧,我找找看看 回复 4# xms77
嵌套的还是没有在同时运行呀,只是一个子程序中断之后再执行其他子程序 回复 1# candy_王子
#include <Misc.au3>
#include <WinAPIEx.au3>
Opt('MustDeclareVars', 1)
Opt('TrayAutoPause', 0)
Global $hTimerProc = DllCallbackRegister('_TimerProc', 'none', 'hwnd;uint;uint_ptr;dword')
Global $hTimerProc2 = DllCallbackRegister('_TimerProc2', 'none', 'hwnd;uint;uint_ptr;dword')
Global $Count = 0, $Count2 = 0
_WinAPI_SetTimer(0, 0, 1000, DllCallbackGetPtr($hTimerProc))
_WinAPI_SetTimer(0, 0, 1000, DllCallbackGetPtr($hTimerProc2))
Do
Sleep(100)
Until _IsPressed('1B') ;ESC
DllCallbackFree($hTimerProc)
DllCallbackFree($hTimerProc2)
Func _TimerProc($hWnd, $iMsg, $iTimerId, $iTime)
$Count += 1
ConsoleWrite($Count & @CR)
EndFunc ;==>_TimerProc
Func _TimerProc2($hWnd, $iMsg, $iTimerId, $iTime)
$Count2 += 1
If Not WinExists('') Then ShellExecute('notepad.exe')
WinWait('')
ControlSend('', '', 'Edit1', $Count2 & @CR)
EndFunc ;==>_TimerProc2
类似回调函数? 回复 7# lixiaolong
这个貌似也不双线程同时进行。。
在 _TimerProc 函数中加
sleep(10*1000)
_TimerProc2就不是每少加1 回复 9# auto
确实这样{:face (207):} _winapi_creatsemiphore,随便建,忘了数量限制了 回复 11# netegg
这个是用作线程同步的吧?功能正好相反,一个线程执行完成,另一个线程才能执行。 回复 12# pusofalse
说实话,这个并发访问对象,我也一直不太清楚,只看字面的意思的话,并发的话应该是同时,可是看例子的运行结果又似乎不太对
页:
[1]