Skip to content

Instantly share code, notes, and snippets.

@jgranick
Created August 24, 2012 17:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jgranick/3453231 to your computer and use it in GitHub Desktop.
Save jgranick/3453231 to your computer and use it in GitHub Desktop.
How to set and retrieve the same value between threads (NME recipe)
import cpp.vm.Mutex;
import cpp.vm.Thread;
import nme.display.Sprite;
import nme.Lib;
class ThreadingExample extends Sprite {
public function new () {
super ();
var data = new ShareData ();
var first = Thread.create (setValue);
var second = Thread.create (retrieveValue);
first.sendMessage (data);
second.sendMessage (data);
}
private function setValue ():Void {
var data = Thread.readMessage (true);
data.value = 100;
}
private function retrieveValue ():Void {
var data = Thread.readMessage (true);
trace ("The value is " + data.value);
}
}
class ShareData {
public var value (getValue, setValue):Int;
private var mutex:Mutex;
public function new () {
mutex = new Mutex ();
}
private function getValue ():Int {
mutex.acquire ();
var result = value;
mutex.release ();
return result;
}
private function setValue (newValue:Int):Int {
mutex.acquire ();
value = newValue;
mutex.release ();
return newValue;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment