# limitations under the License.
# test for threaded annotation
-module threaded_example
+module threaded_example is example
import pthreads
-# the "is threaded" annotation makes this fun run on an other thread
+# the `is threaded` annotation makes this method run on an other thread
fun foo is threaded do
sys.nanosleep(1,0)
print "threaded"
end
-foo
+# Parameterized `threaded` method, same as foo, but with parameters
+fun bar(i : Int, s : String) is threaded do
+ sys.nanosleep(2, 0)
+ print i
+ print s
+end
+
+# Parameterized `threaded` method with a return type
+fun baz(i : Int, j : Int): Int is threaded do
+ sys.nanosleep(10, 0)
+ return i + j
+end
+
print "main"
-sys.nanosleep(2,0)
+foo
+bar(10, "parameterized and threaded")
+sys.nanosleep(5,0)
+var x = baz(2, 3)
+print "main, waiting for baz"
+var y = x.join
+print("baz result : " + y.to_s)