mirror of
https://github.com/danbulant/Cosmos
synced 2026-05-19 12:30:32 +00:00
45 lines
1.4 KiB
C#
45 lines
1.4 KiB
C#
using st = System.Threading;
|
|
|
|
namespace Cosmos.System
|
|
{
|
|
public class Thread
|
|
{
|
|
public uint ThreadID;
|
|
private Cosmos.Core.Processing.ProcessContext.Context Data;
|
|
|
|
public Thread(st.ThreadStart start)
|
|
{
|
|
ThreadID = Cosmos.HAL.Global.SpawnThread(start);
|
|
ThreadFinalSetup();
|
|
}
|
|
|
|
public Thread(st.ParameterizedThreadStart start, object param)
|
|
{
|
|
ThreadID = Cosmos.HAL.Global.SpawnThread(start, param);
|
|
ThreadFinalSetup();
|
|
}
|
|
|
|
private void ThreadFinalSetup()
|
|
{
|
|
Data = Cosmos.Core.Processing.ProcessContext.GetContext(ThreadID);
|
|
Data.state = Core.Processing.ProcessContext.Thread_State.PAUSED;
|
|
}
|
|
|
|
public void Start()
|
|
{
|
|
Data.state = Core.Processing.ProcessContext.Thread_State.ALIVE;
|
|
}
|
|
|
|
public void Stop()
|
|
{
|
|
Data.state = Core.Processing.ProcessContext.Thread_State.PAUSED;
|
|
}
|
|
|
|
public static void Sleep(int ms)
|
|
{
|
|
Cosmos.Core.Processing.ProcessContext.m_CurrentContext.arg = ms;
|
|
Cosmos.Core.Processing.ProcessContext.m_CurrentContext.state = Core.Processing.ProcessContext.Thread_State.WAITING_SLEEP;
|
|
while (Cosmos.Core.Processing.ProcessContext.m_CurrentContext.state == Core.Processing.ProcessContext.Thread_State.WAITING_SLEEP) { }
|
|
}
|
|
}
|
|
}
|