當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Processing thread()用法及代碼示例


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.org大神的英文原創作品 thread()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。