aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/OptionalModules/Scripting/Minimodule/Test
diff options
context:
space:
mode:
authorAdam Frisby2009-04-24 05:33:23 +0000
committerAdam Frisby2009-04-24 05:33:23 +0000
commit883f7dde3884bca10f324f6a31e0882cf23c04d8 (patch)
tree53cdc16d97034bc125c148086c689badcc7f2906 /OpenSim/Region/OptionalModules/Scripting/Minimodule/Test
parentUpdate svn properties. (diff)
downloadopensim-SC_OLD-883f7dde3884bca10f324f6a31e0882cf23c04d8.zip
opensim-SC_OLD-883f7dde3884bca10f324f6a31e0882cf23c04d8.tar.gz
opensim-SC_OLD-883f7dde3884bca10f324f6a31e0882cf23c04d8.tar.bz2
opensim-SC_OLD-883f7dde3884bca10f324f6a31e0882cf23c04d8.tar.xz
* Implements Microthreading for MRM scripting.
* This is achieved through two new keywords "microthreaded" and "relax". example: public microthreaded void MyFunc(...) { ... relax; ... }
Diffstat (limited to 'OpenSim/Region/OptionalModules/Scripting/Minimodule/Test')
-rw-r--r--OpenSim/Region/OptionalModules/Scripting/Minimodule/Test/Microthreads/MicrothreadSample.txt40
-rw-r--r--OpenSim/Region/OptionalModules/Scripting/Minimodule/Test/TestModule.cs43
2 files changed, 83 insertions, 0 deletions
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Test/Microthreads/MicrothreadSample.txt b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Test/Microthreads/MicrothreadSample.txt
new file mode 100644
index 0000000..dc15c47
--- /dev/null
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Test/Microthreads/MicrothreadSample.txt
@@ -0,0 +1,40 @@
1//MRM:C#
2using System.Collections;
3using System.Collections.Generic;
4using OpenSim.Region.OptionalModules.Scripting.Minimodule;
5
6namespace OpenSim
7{
8 class MiniModule : MRMBase
9 {
10 public microthreaded void MicroThreadFunction(string testparam)
11 {
12 Host.Object.Say("Hello " + testparam);
13
14 relax; // the 'relax' keyword gives up processing time.
15 // and should be inserted before, after or in
16 // any computationally "heavy" zones.
17
18 int c = 500;
19 while(c-- < 0) {
20 Host.Object.Say("C=" + c);
21 relax; // Putting 'relax' in microthreaded loops
22 // is an easy way to lower the CPU tax
23 // on your script.
24 }
25
26 }
27
28 public override void Start()
29 {
30 Host.Microthreads.Run(
31 MicroThreadFunction("World!")
32 );
33 }
34
35 public override void Stop()
36 {
37
38 }
39 }
40}
diff --git a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Test/TestModule.cs b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Test/TestModule.cs
index 702ac74..73af7f0 100644
--- a/OpenSim/Region/OptionalModules/Scripting/Minimodule/Test/TestModule.cs
+++ b/OpenSim/Region/OptionalModules/Scripting/Minimodule/Test/TestModule.cs
@@ -25,12 +25,55 @@
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27 27
28using System.Collections;
29using System.Collections.Generic;
28using OpenSim.Region.OptionalModules.Scripting.Minimodule; 30using OpenSim.Region.OptionalModules.Scripting.Minimodule;
29 31
30namespace OpenSim 32namespace OpenSim
31{ 33{
32 class MiniModule : MRMBase 34 class MiniModule : MRMBase
33 { 35 {
36 // private microthreaded Function(params...)
37 private IEnumerable TestMicrothread(string param)
38 {
39 Host.Console.Info("Microthreaded " + param);
40 // relax;
41 yield return null;
42 Host.Console.Info("Microthreaded 2" + param);
43 yield return null;
44 int c = 100;
45 while(c-- < 0)
46 {
47 Host.Console.Info("Microthreaded Looped " + c + " " + param);
48 yield return null;
49 }
50 }
51
52 public void Microthread(IEnumerable thread)
53 {
54
55 }
56
57 public void RunMicrothread()
58 {
59 List<IEnumerator> threads = new List<IEnumerator>();
60 threads.Add(TestMicrothread("A").GetEnumerator());
61 threads.Add(TestMicrothread("B").GetEnumerator());
62 threads.Add(TestMicrothread("C").GetEnumerator());
63
64 Microthread(TestMicrothread("Ohai"));
65
66 int i = 0;
67 while(threads.Count > 0)
68 {
69 i++;
70 bool running = threads[i%threads.Count].MoveNext();
71
72 if (!running)
73 threads.Remove(threads[i%threads.Count]);
74 }
75 }
76
34 public override void Start() 77 public override void Start()
35 { 78 {
36 // Say Hello 79 // Say Hello