sclang: ServerShmInterface - try to avoid multiple destructor calls
[supercollider.git] / HelpSource / Classes / Thread.schelp
blobaba4056c0a2ba1e0bd0e2fa049cf6ca76c76312a
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 classMethods::
17 method::new
19 Create a Thread.
21 discussion:: You will not typically do this yourself but as a result of creating Routines, for example.
23 code::
24 g = Thread({"hello".postln;});
25 g.seconds; //time of creation, cannot advance without a clock
28 argument::func
29 A function with code for the thread to run.
31 argument::stackSize
32 defaults to 64 depth call stack.
34 instanceMethods::
36 method::beats
37 Get or set the elapsed beats (logical time) of the thread
39 method::seconds
40 Get or set the elapsed seconds (logical time) of the thread.
42 method::clock
43 Get or set the thread's clock
45 method::isPlaying
46 Returns:: true if it is playing
48 code::
49 // example
50 thisThread.beats;
51 thisThread.seconds;
52 thisThread.clock;
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};