Skip to content

Instantly share code, notes, and snippets.

@sonygod
Created February 28, 2013 03:39
Show Gist options
  • Save sonygod/5053985 to your computer and use it in GitHub Desktop.
Save sonygod/5053985 to your computer and use it in GitHub Desktop.
多线程演示2,共享数组
package ;
import neko.vm.Thread;
import neko.vm.Deque;
/**
* ...
* @author sonygod VKT
*
* 多线程演示 2
*/
class TestThread
{
var testShareNo :Int= 9999;
public function new()
{
var thread1 = Thread.create(thread1Call);
var thread2 = Thread.create(thread2Call);
thread1.sendMessage(Thread.current());
thread1.sendMessage(thread2);
thread2.sendMessage(Thread.current());
var obj = new Deque<Int>();
var thread3 = Thread.create(thread3Call);
var thread4 = Thread.create(thread4Call);
thread3.sendMessage(Thread.current());
thread3.sendMessage(thread4);
thread3.sendMessage(obj);
thread4.sendMessage(Thread.current());
thread4.sendMessage(obj);
Thread.readMessage(true);
Thread.readMessage(true);
Thread.readMessage(true);
Thread.readMessage(true);
trace("finish"+testShareNo);
}
function thread1Call():Void {
var main :Thread= Thread.readMessage(true);
var thread2 :Thread= Thread.readMessage(true);
trace("thread1 got it ");
for (ii in 0...100) {
thread2.sendMessage("sum" + ii);
testShareNo++;
Sys.sleep(1 / 100);
}
main.sendMessage("done");
}
function thread2Call():Void {
var main :Thread = Thread.readMessage(true);
trace("thread2 got it ");
for (ii in 0...100) {
trace("thread2--"+Thread.readMessage(true));
}
main.sendMessage("done");
}
function thread3Call():Void{
var main :Thread= Thread.readMessage(true);
var thread4 :Thread = Thread.readMessage(true);
var obj:Deque<Int> = Thread.readMessage(true);
trace("thread3 got it "+obj);
for (ii in 0...100) {
thread4.sendMessage("sum" + ii);
testShareNo++;
obj.push(ii);
Sys.sleep(1 / 100);
}
main.sendMessage("done");
}
function thread4Call():Void{
var main :Thread = Thread.readMessage(true);
var obj:Deque<Int> = Thread.readMessage(true);
trace("thread4 got it ");
for (ii in 0...100) {
trace("thread4--" + Thread.readMessage(true));
trace("t2 got: " + obj.pop(true));
}
//trace("thread4-pop" + Thread.readMessage(true).pop());
main.sendMessage("done");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment