Explicitly include a boost "windows" folder even on linux
[supercollider.git] / HelpSource / Classes / Thread.schelp
blobfd3e9e88143a26c5c0b57b620ef4a62c7dddb6a2
1 class::Thread
2 summary::represents an individual operating system thread
3 categories::Core>Kernel
4 related:: Classes/Routine
6 description::
8 Normally there is no need to instantiate a Thread, but its subclass Routine is very useful.
10 It is wise not to fiddle with the source code for this class; see the warnings in the class file.
12 method:: thisThread
13 The global pseudo-variable code::thisThread:: always returns the enclosing thread running the given code. A Thread is aware of its own attached clock and associated beats and seconds timing, and has an individual random number seed and exception handler.
15 code::
16 // example
17 thisThread.beats;
18 thisThread.seconds;
19 thisThread.clock;
22 classMethods::
24 method::new
26 Create a Thread.
28 discussion:: You will not typically do this yourself but as a result of creating Routines, for example.
30 code::
31 g = Thread({"hello".postln;});
32 g.seconds; //time of creation, cannot advance without a clock
35 argument::func
36 A function with code for the thread to run.
38 argument::stackSize
39 defaults to 64 depth call stack.
41 instanceMethods::
43 method::beats
44 Get or set the elapsed beats (logical time) of the thread.
46 method::seconds
47 Get or set the elapsed seconds (logical time) of the thread.
49 method::clock
50 Get or set the thread's clock.
52 method::isPlaying
53 Returns:: true if it is playing.
55 method::state
57 The internal state values for a Thread instance can be polled:
58 table::
59 ## 0 || not started
60 ## 7 || running
61 ## 8 || stopped
64 subsection::Seeding the random number generator
66 see also: link::Reference/randomSeed::
68 method::randSeed
69 Set the random number generator seed using a single integer.
70 discussion::
71 Example:
72 code::
73 g = thisThread.randSeed = 4;
74 10.do{1.0.rand2.postln};
77 method::randData
79 Get or set the three integer array which defines the internal basis for the random number generator.  You can use this to get back the exact same random number sequence, and it provides a mechanism for automatic replay for generative music.
80 discussion::
81 Example:
82 code::
83 g = thisThread.randData;
84 10.do{1.0.rand2.postln};
86 code::
87 // each time the seed is reset, the random number generation should give the same sequence
88 thisThread.randData_(Int32Array[ -662787342, 1546785953, 1661466823 ]);
89 10.do{1.0.rand2.postln};