腳本單線程
① 剛接觸按鍵精靈想寫個多線程腳本就是不知道怎麼樣用多線程格式
按照需求C和D應該是不用開線程的,A、B同時運行,B找完東西運行C,C運行完運行D,也就是說B、C、D單線程就行了,A自己一個線程
如果你有單獨的問題可以追問,如果是想要完整的教程還是建議去相關論壇去多找找
② bat腳本 啟動和關閉java線程
我以前的做法是在線程中開一個socket, ip是127.0.0.1 埠自定,每次while循環都查詢此socket。
在執行 shutdown.bat時, 向此socket發送一個標志, 主線程收到此標志後,則完全退出,
關閉線程。
③ 腳本單線程運行沒問題,多線程運行出現錯誤率,是腳本的問題還是系統的問題
很多朋友在WIN2000或XP下安裝軟體時,有時會提示「安裝程序啟動安裝引擎失敗:不支持此介面」,導致無法安裝(安裝引擎,,比如microsoft的Windows Install Service.之類的,,也可能是其它安裝器的引擎)。 方法一:請檢查是否具有管理員的許可權? 方法二:可能是系統文件損壞或被修改,請嘗試用SFC命令修復一下。 用參數 scannow 立即掃描所有受保護的系統文件。 一次掃描所有受保護的系統文件。 方法三:是否安裝了其它有沖突的軟體,如安裝了(網路)IE搜索伴侶和ACDSEE5.0(特別是迷你中文版),有時就會導致這種現象,請卸掉5.0,找個其它版本(如4.0)的裝一下。 網上有一個版本的ACD See 5.0中文版對Windows 有一個嚴重的摧毀作用,這個版本有一個特殊的標記:就是它的圖標(ico)上面有一個小小的五星紅旗。 安裝了這個版本後,Windows的組件服務將被破壞,IIS的asp程無法運行,另外,許多程序裝時會出錯,提示「安裝程序啟動安裝引擎失敗,不支持此介面!」,可以卸載這個版本的和搜索工具和ACD See,刪除[HKEY_LOCAL_MACHINE\software\]下面的網路工具和ACD See項 方法四:有的軟體安裝需要windows installer支持,一般解決方法為:在控制面板->管理工具->服務中,找到 windows installer服務,把啟動類型改為手動,然後啟動即可。記住在安裝好程序後將此服務停止。如果仍然存在問題,請到微軟站點下載最新的windows installer 2.0版。 方法五:安裝文件是單線程的,查看正在運行的進程,如果裡面有ikernel.exe,則表示現在無法安裝,結束此進程,然後再安裝就OK了。 方法六:因為NORDON殺毒軟體會把INSTALL SHIELD 那個ikernel.exe文件誤認為病毒。退出防火牆,重新啟動,就好了。 方法七:進入系統所在分區program files -> common fiels -> installshield -> engine -> 6 - > intel32,把這個文件夾中的文件全部刪除(或直接把engine整個文件夾都刪了),重新啟動,然後再安裝。 方法八:安裝NORTON SYTEMWORKS 2003,用它的WINDOCTOR自動修復,然後用了NORTON SYTEMWORKS的ONE BUTTON CHECKUP,重啟。 方法九:現在的好多的軟體的安裝程序都不是exe的而是msi,而msi是一種新的安裝程序的腳本文件。就算有的安裝程序是exe的但在它的安裝目錄里也有個msi文件,實際上是exe調用msi文件來安裝程序的。msi是腳本文件,實際上真正運行腳本文件的是「msiexec.exe」它就是一切問題的原因。需要安裝instmsiw.exe這個文件,instmsiw.exe是一個壓縮包裡麵包括了所有關於運行msi所需要的文件。運行後問題就可解決了。 方法十:當然是重裝系統啦,前九種方法均無效時也只有這樣做了。
④ cocos2dx socket lua 是單線程的嗎
上層調用socket 是非阻塞的 你執行的時候 很快就會執行到下一行 但是消息不一定就立馬發出去了 一般網路和io這類比較費時的操作 開放給腳本使用 大多都是非阻塞的 因為lua本身對線程的操作很弱 如果在這里處理這些長時間的操作 就會導致頁面被卡住 體驗很差
⑤ 按鍵精靈(如何把截到的圖放進附件里)為什麼路徑是Attachment:\未命名.bmp
「按鍵精靈安卓版」關於「多線程」的理解
我平時寫腳本基本上是不用多線程的,一是我寫長期運行的腳本不多,沒有多線程的需求,二是多線程容易造成腳本卡頓。
當然我不用不代表別人也不用,最近就看到群里有一些朋友在問關於多線程的問題,確實對於新手朋友來說容易出問題。
下面就說一下我對於多線程的一些理解:
(一)什麼是主線程、什麼是子線程
先說一個誤區:相信很多新手朋友會覺得主線程是這樣的:
Function 主程序()
//這裡面是我的腳本主要的功能操作
End Function
這明顯是錯誤的,在多線程腳本中,區分主線程的方法是看它是不是不在function或者sub內部,只要沒在函數內部的就是主線程。至於說取個主程序或者主線程這類名字,和它是不是主線程沒有一點關系。
上面說的是主線程,再來說說子線程是什麼?
只要用Thread.Start啟動的都是子線程。比如:
Thread.Start 主程序
Function 主程序()
//這裡面是我的腳本主要的功能操作
End Function
當然沒有啟動的函數就不算了。
(二)子線程可以有多少個?
從語法角度來說沒有限制,你寫多少個都可以,但是實際應用中基本上也就一到兩個,不會再多了,否則腳本會卡頓,甚至直接崩潰。
(三)我只有一個函數,可不可以啟動多個子線程?
可以,一個函數啟動兩次,就會有兩個子線程。比如:
Thread.Start 主程序
Thread.Start 主程序
Function 主程序()
//這裡面是我的腳本主要的功能操作
End Function
這段代碼運行以後,腳本是有兩個主程序代碼同時運行。
通常我們不會這樣用,為了防止一個函數被反復使用,會把啟動線程賦值給一個變數。
dim h=Thread.Start(主程序)
賦值給一個變數的好處是啥呢?
如果想要停止某個線程的時候,直接用停止線程命令停止對應的變數。
Thread.Stop (h)
(四)子線程能不能關閉或者啟動別的子線程?
不能,控制子線程的開啟和關閉只能是主線程。如果想要一個子線程式控制制另外一個子線程,就需要藉助共享變數把「控制信號」先發給主線程,然後在讓主線程式控制制另外一個子線程關閉或者開啟。
(五)多線程的腳本可以使用全局變數嗎?
不可以,有些朋友寫了一個單線程的腳本,測試也沒問題,後來覺得腳本運行久了可能會出現卡頓的現象,於是想要加個檢測卡頓的子線程。可是原本正常運行的腳本沒有做任何變化,變成多線程以後就不能用了。
這是因為原本腳本中可能用到全局變數了,變成多線程以後,全局變數失效導致腳本錯誤。
什麼是按鍵的全局變數?
Dim m=1
Call 函數()
Function 函數()
TracePrint m
End Function
上面這段代碼中變數m是在函數外面定義的,這個就是按鍵的全局變數。同理還有一個局部變數,就是在函數裡面定義的變數。
為了減少上面說到的問題,我們盡量定義局部變數。也就是一個函數中用到所有變數盡量在它內容部定義。
(六)子線程中可以調用函數嗎?
可以,但是要注意寫法,下面說幾個多線程中可能會寫錯的地方。
①啟動子線程的時候代碼中,子線程名稱後面不能有括弧
Thread.Start(主程序) //正確寫法
Thread.Start(主程序()) //錯誤寫法
②啟動帶參數的子線程
Thread.Start(主程序(參數1,參數2)) //錯誤寫法
Thread.Start(主程序,參數1,參數2) //正確寫法
③子程序中調用函數
Call 函數 //錯誤寫法
Call 函數() //正確寫法
(七)哪些地方可能會用到多線程
我們以雙線程為例,一般來說主線程會做非操作性的功能,子線程做具體操作功能。
非操作性的功能,比如:
①檢測卡頓
②實時屏幕顯示內容
③心跳檢測
這些操作有一個共同的特點,不影響界面上原有的其他操作。
⑥ 按鍵精靈運行多線程腳本卡
看樣子是邏輯混亂或者沒有循環代碼,回頭給你看看,我先洗澡。
我剛剛簡單測試了下,貌似沒問題啊,並不會卡死
另外你說的功能其實不用多線程的,或者說一個子程序或主程序就能達成
單線程版:
BeginThreada
Do
Delay1000
Loop
Suba
For300
KeyPress"E",1
Next
KeyDown"W",1
Delay1000
KeyUp"W",1
Delay500
KeyDown"S",1
Delay1000
KeyUp"S",1
EndSub
主程序版:
For300
KeyPress"E",1
Next
KeyDown"W",1
Delay1000
KeyUp"W",1
Delay500
KeyDown"S",1
Delay1000
KeyUp"S",1
⑦ php是單線程非阻塞嗎
PHP支持多線程,也可以阻塞,根據需要選擇編寫不同的代碼。
⑧ Unity3d中的腳本是多線程還是單線程
看具體代碼,你寫單線程就是單線程,寫多線程就是多線程,C#語言寫的,只是unity的多數api只能在主線程調用
⑨ JS腳本通過什麼方法可以實現多線程
雖然javascript是單線程的,但是瀏覽器是多線程的,典型的瀏覽器有如下線程:
javascript引擎線程
界面渲染線程
瀏覽器事件觸發線程
Http請求線程
javascript單線程指的是javascript引擎線程單線程處理它的事件隊列,而瀏覽器是事件驅動的,很多事件都是非同步的,比如滑鼠點擊事件,setTimeout,Ajax回調事件,當這些事件發生時,瀏覽器會將這些事件放入執行隊列,待瀏覽器空閑時再執行。
另外,值得一提的是,ajax調用確實是非同步的,瀏覽器會啟動一個新線程來想服務端發送請求,如果設置了回調事件,會根據服務端返回狀態將回調事件放入事件隊列。
⑩ 給按鍵小精靈設置試用時間的腳本的 超過這個時間就停止
您好,哪位網友技術明顯不夠,可以使用延時命令,採用多線程,代碼如下:
BeginThread 試用
Sub 試用
Delay 60000 * 30 //這里的30是指30分鍾的意思,根據需要自己修改
ExitScript
End Sub
這個比較適合新手,把這個代碼「BeginThread 試用」放到腳本需要開始計時試用時間的位置即可!如果幫到你請及時採納,很高興為您解答!