Я хотел бы реализовать функцию sleep () в своем классе потока, но я не знаю, является ли это правильным / правильным способом сделать это.
Это весь мой класс темы (thread.h):
#include <process.h>
struct RUNNABLE{
virtual void run() = 0;
};
class thread{
public:
void start(void *ptr){
DWORD thr_id;
HANDLE thr_handl = (HANDLE)_beginthreadex(NULL, 0, thread_proc, ptr, 0, (unsigned int*)&thr_id);
}
void sleep(int sleep_time, bool alertable){
SleepEx(sleep_time, alertable);
}
private:
static unsigned int __stdcall thread_proc(void *param){
((RUNNABLE*)param)->run();
_endthreadex(0);
return 0;
}
};
И, как вы, вероятно, можете разобраться, это моя функция сна ():
void sleep(int sleep_time, bool alertable){
SleepEx(sleep_time, alertable);
}
Но приведет ли это к тому, что фактический поток, содержащийся в этом экземпляре потока, будет спать в течение указанного количества миллисекунд?
С наилучшими пожеланиями,
Вениамин:).
EDIT:
Итак, согласно atzz, я мог бы определить функцию сна как статическую функцию-член, и у меня был бы этот вызов :: SleepEx (), и это позволило бы мне вызывать его так:
class test : RUNNABLE{
virtual void run(){
printf("hi");
thread::sleep(1000, false);
}
};
и тогда это приведет к тому, что поток, выполняющий «тестовый» исполняемый объект, будет спать 1000 миллисекунд?