当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。