diff --git a/vala/threads/class.vala b/vala/threads/class.vala index 7f38c81..ec7dea8 100644 --- a/vala/threads/class.vala +++ b/vala/threads/class.vala @@ -1,4 +1,4 @@ -public class MyThread { +public class MyThread : Object { private string _s; @@ -8,7 +8,9 @@ public class MyThread { public int run () { stdout.printf ("%s\n", _s); + //Thread.usleep(3000000); return 0; + //Thread.exit (0); // the same } } diff --git a/vala/threads/lock.vala b/vala/threads/lock.vala new file mode 100644 index 0000000..8b4b684 --- /dev/null +++ b/vala/threads/lock.vala @@ -0,0 +1,34 @@ +public class MyThread : Object { + + public int lock_var = 0; + + public int increase_lock_var () { + var ret = 0; + lock (lock_var) ret = ++lock_var; + return ret; + } + + public int run () { + + for (var i = 0; i < 8; ++i) { + var tmp = 0; + lock (lock_var) tmp = lock_var++; + stdout.puts (@"thrd:$lock_var\n"); + Thread.usleep(100); + } + return 0; + } +} + +void main () { + var mt = new MyThread (); + var t = new Thread ("Debugging thread name", mt.run); + + for (var i = 0; i < 8; ++i) { + var tmp = mt.increase_lock_var (); + stdout.puts(@"main:$tmp\n"); + Thread.usleep(100); + } + + t.join (); +}