Processing, thread()
用法介紹。
用法
thread(name)
參數
name
(String)
要在單獨線程中執行的函數的名稱
返回
void
說明
處理草圖遵循特定的步驟順序:首先是setup()
,然後是draw()
,一遍又一遍地循環。線程也是一係列具有開始、中間和結束的步驟。處理草圖是一個單線程,通常稱為"Animation" 線程。但是,其他線程的序列可以獨立於主動畫循環運行。事實上,您可以一次啟動任意數量的線程,它們都會同時運行。
您不能從 thread()
調用的函數繪製到屏幕。因為它是獨立運行的,所以代碼不會同步到動畫線程,導致奇怪的或者至少不一致的結果。使用 thread()
加載文件或執行其他需要時間的任務。任務完成後,設置一個指示任務完成的變量,並從 draw()
方法內部檢查。
處理經常使用線程,例如使用 captureEvent()
和 movieEvent()
等庫函數。這些函數是由在後台運行的不同線程觸發的,並且隻要有要報告的內容,它們就會提醒處理。當您需要執行耗時過長且會減慢主動畫幀速率的任務時,這很有用,例如從網絡中抓取數據。如果一個單獨的線程卡住或有錯誤,整個程序不會停止,因為錯誤隻會停止那個單獨的線程。
編寫自己的線程可能是一項複雜的工作,涉及擴展 Java Thread 類。但是,thread()
方法是在處理中實現簡單線程的一種快速而肮髒的方法。通過傳入與草圖中其他地方聲明的函數名稱相匹配的String
,Processing 將在單獨的線程中執行該函數。
例子
String time = "";
void setup() {
size(100, 100);
}
void draw() {
background(0);
// Every 30 frames request new data
if (frameCount % 30 == 0) {
thread("requestData");
}
text(time, 10, 50);
}
// This happens as a separate thread and can take as long as it wants
void requestData() {
JSONObject json = loadJSONObject("http://time.jsontest.com/");
time = json.getString("time");
}
相關用法
- Processing this用法及代碼示例
- Processing texture()用法及代碼示例
- Processing textSize()用法及代碼示例
- Processing textureMode()用法及代碼示例
- Processing triangle()用法及代碼示例
- Processing textLeading()用法及代碼示例
- Processing trim()用法及代碼示例
- Processing true用法及代碼示例
- Processing text()用法及代碼示例
- Processing textDescent()用法及代碼示例
- Processing textFont()用法及代碼示例
- Processing textAscent()用法及代碼示例
- Processing textAlign()用法及代碼示例
- Processing textMode()用法及代碼示例
- Processing try用法及代碼示例
- Processing textWidth()用法及代碼示例
- Processing tint()用法及代碼示例
- Processing tan()用法及代碼示例
- Processing textureWrap()用法及代碼示例
- Processing translate()用法及代碼示例
- Processing FFT用法及代碼示例
- Processing SawOsc.pan()用法及代碼示例
- Processing FloatDict用法及代碼示例
- Processing FFT.stop()用法及代碼示例
- Processing join()用法及代碼示例
注:本文由純淨天空篩選整理自processing.org大神的英文原創作品 thread()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。