Update svn properties.
parent
d8313e314f
commit
6077bbda30
|
@ -1,12 +1,12 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule.Interfaces
|
||||
{
|
||||
public interface IMicrothreader
|
||||
{
|
||||
void Run(IEnumerable microthread);
|
||||
}
|
||||
}
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule.Interfaces
|
||||
{
|
||||
public interface IMicrothreader
|
||||
{
|
||||
void Run(IEnumerable microthread);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,38 +1,38 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using OpenSim.Region.OptionalModules.Scripting.Minimodule.Interfaces;
|
||||
|
||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
||||
{
|
||||
public class MicroScheduler : IMicrothreader
|
||||
{
|
||||
private readonly List<IEnumerator> m_threads = new List<IEnumerator>();
|
||||
|
||||
public void Run(IEnumerable microthread)
|
||||
{
|
||||
lock (m_threads)
|
||||
m_threads.Add(microthread.GetEnumerator());
|
||||
}
|
||||
|
||||
public void Tick(int count)
|
||||
{
|
||||
lock (m_threads)
|
||||
{
|
||||
if(m_threads.Count == 0)
|
||||
return;
|
||||
|
||||
int i = 0;
|
||||
while (m_threads.Count > 0 && i < count)
|
||||
{
|
||||
i++;
|
||||
bool running = m_threads[i%m_threads.Count].MoveNext();
|
||||
|
||||
if (!running)
|
||||
m_threads.Remove(m_threads[i%m_threads.Count]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using OpenSim.Region.OptionalModules.Scripting.Minimodule.Interfaces;
|
||||
|
||||
namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
|
||||
{
|
||||
public class MicroScheduler : IMicrothreader
|
||||
{
|
||||
private readonly List<IEnumerator> m_threads = new List<IEnumerator>();
|
||||
|
||||
public void Run(IEnumerable microthread)
|
||||
{
|
||||
lock (m_threads)
|
||||
m_threads.Add(microthread.GetEnumerator());
|
||||
}
|
||||
|
||||
public void Tick(int count)
|
||||
{
|
||||
lock (m_threads)
|
||||
{
|
||||
if(m_threads.Count == 0)
|
||||
return;
|
||||
|
||||
int i = 0;
|
||||
while (m_threads.Count > 0 && i < count)
|
||||
{
|
||||
i++;
|
||||
bool running = m_threads[i%m_threads.Count].MoveNext();
|
||||
|
||||
if (!running)
|
||||
m_threads.Remove(m_threads[i%m_threads.Count]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,40 +1,40 @@
|
|||
//MRM:C#
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using OpenSim.Region.OptionalModules.Scripting.Minimodule;
|
||||
|
||||
namespace OpenSim
|
||||
{
|
||||
class MiniModule : MRMBase
|
||||
{
|
||||
public microthreaded void MicroThreadFunction(string testparam)
|
||||
{
|
||||
Host.Object.Say("Hello " + testparam);
|
||||
|
||||
relax; // the 'relax' keyword gives up processing time.
|
||||
// and should be inserted before, after or in
|
||||
// any computationally "heavy" zones.
|
||||
|
||||
int c = 500;
|
||||
while(c-- < 0) {
|
||||
Host.Object.Say("C=" + c);
|
||||
relax; // Putting 'relax' in microthreaded loops
|
||||
// is an easy way to lower the CPU tax
|
||||
// on your script.
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public override void Start()
|
||||
{
|
||||
Host.Microthreads.Run(
|
||||
MicroThreadFunction("World!")
|
||||
);
|
||||
}
|
||||
|
||||
public override void Stop()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
//MRM:C#
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using OpenSim.Region.OptionalModules.Scripting.Minimodule;
|
||||
|
||||
namespace OpenSim
|
||||
{
|
||||
class MiniModule : MRMBase
|
||||
{
|
||||
public microthreaded void MicroThreadFunction(string testparam)
|
||||
{
|
||||
Host.Object.Say("Hello " + testparam);
|
||||
|
||||
relax; // the 'relax' keyword gives up processing time.
|
||||
// and should be inserted before, after or in
|
||||
// any computationally "heavy" zones.
|
||||
|
||||
int c = 500;
|
||||
while(c-- < 0) {
|
||||
Host.Object.Say("C=" + c);
|
||||
relax; // Putting 'relax' in microthreaded loops
|
||||
// is an easy way to lower the CPU tax
|
||||
// on your script.
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public override void Start()
|
||||
{
|
||||
Host.Microthreads.Run(
|
||||
MicroThreadFunction("World!")
|
||||
);
|
||||
}
|
||||
|
||||
public override void Stop()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue