2211
This commit is contained in:
parent
191fcd3da9
commit
89f85d0ea7
|
|
@ -16,6 +16,8 @@ struct TimeSTLStruct
|
|||
std::string Name;
|
||||
int Max_Time;
|
||||
int Now_Time;
|
||||
long long Static_Time;
|
||||
HANDLE Thand;
|
||||
};
|
||||
//构造Time类型容器
|
||||
static std::map<std::string, TimeSTLStruct>Time_STL;
|
||||
|
|
|
|||
|
|
@ -822,14 +822,14 @@ int squirrel::New_STL(uint32_t v)
|
|||
}
|
||||
|
||||
|
||||
|
||||
//时间容器线程
|
||||
void TimeSTL(LPVOID lpParam)
|
||||
{
|
||||
TimeSTLStruct *pack = (TimeSTLStruct*)lpParam;
|
||||
int F_Time = (int)GetTickCount64();
|
||||
Time_STL[pack->Name].Static_Time = (int)GetTickCount64();
|
||||
while (true)
|
||||
{
|
||||
int N_Time = (int)GetTickCount64() - F_Time;
|
||||
int N_Time = (int)GetTickCount64() - Time_STL[pack->Name].Static_Time;
|
||||
if (N_Time < Time_STL[pack->Name].Max_Time)
|
||||
{
|
||||
Time_STL[pack->Name].Now_Time = N_Time;
|
||||
|
|
@ -858,26 +858,49 @@ int squirrel::Timer_STL(uint32_t v)
|
|||
|
||||
switch (Type)
|
||||
{
|
||||
case 0: {
|
||||
case 0: {//设置时间容器
|
||||
if (Time_STL.count(Name) != 0)//如果这个标识容器存在 就返回 否则创建
|
||||
{
|
||||
SQPushBool(v, false);
|
||||
return 1;
|
||||
}
|
||||
TimeSTLStruct pack;
|
||||
TimeSTLStruct pack;//定义结构体
|
||||
pack.Name = Name;//设置容器标识名称
|
||||
pack.Max_Time = MaxTime;//设置 标识时间容器最大时间
|
||||
pack.Now_Time = 0;//设置 标识时间容器当前时间
|
||||
pack.Static_Time = 0;//设置 基础时间(用于运算)
|
||||
pack.Thand = NULL;//设置句柄为空
|
||||
Time_STL[Name] = pack;//设置包给标识时间容器
|
||||
break; }
|
||||
case 1: {
|
||||
DWORD threadID;
|
||||
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)TimeSTL, &Time_STL[Name], 0, &threadID);
|
||||
case 1: {//启动时间容器
|
||||
if (Time_STL[Name].Thand == NULL)//只有句柄为空的时候new线程
|
||||
{
|
||||
DWORD threadID;//线程ID
|
||||
Time_STL[Name].Now_Time = 0;//设置当前容器时间
|
||||
Time_STL[Name].Thand = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)TimeSTL, &Time_STL[Name], 0, &threadID);//创建一个新线程 开始计算时间 并把线程赋予给容器
|
||||
}
|
||||
break; }
|
||||
case 2:
|
||||
SQPushInt(v, Time_STL[Name].Now_Time);
|
||||
case 2://获取时间容器
|
||||
SQPushInt(v, Time_STL[Name].Now_Time);//返回当前容器时间
|
||||
return 1;
|
||||
break;
|
||||
case 3://重置时间容器
|
||||
SuspendThread(Time_STL[Name].Thand);//挂起线程
|
||||
Time_STL[Name].Static_Time = 0;//基准时间设置为0
|
||||
Time_STL[Name].Thand = NULL;
|
||||
ResumeThread(Time_STL[Name].Thand);//启动线程
|
||||
break;
|
||||
case 4://暂停时间容器
|
||||
SuspendThread(Time_STL[Name].Thand);//挂起线程
|
||||
break;
|
||||
case 5://继续时间容器
|
||||
Time_STL[Name].Static_Time = (int)GetTickCount64() - Time_STL[Name].Now_Time;//当前时间 减去容器时间
|
||||
ResumeThread(Time_STL[Name].Thand);//启动线程
|
||||
break;
|
||||
case 6://销毁时间容器
|
||||
CloseHandle(Time_STL[Name].Thand);//销毁线程
|
||||
Time_STL.erase(Name);//销毁容器
|
||||
break;
|
||||
default:
|
||||
SQPushBool(v, false);
|
||||
return 1;
|
||||
|
|
|
|||
Loading…
Reference in New Issue