代码拉取完成,页面将自动刷新
enum threadstate {
pending,
running,
stoping,
stoped
};
class basethread
{
var __thread;
var state;
basethread(){
state = threadstate::pending;
__thread = null;
}
//virsual
var run(){ return false;}
//static
var _basethread_thread_func(var _thread){
if(isvalid(_thread.init)) _thread.init();
while(_thread.state == threadstate::running){
var b = _thread.run();
if(b == false) break;
}
_thread.state = threadstate::stoped;
}
var start(){
state = threadstate::running;
__thread = new thread(_basethread_thread_func,this);
}
var stop(){
if(state == threadstate::running){
state = threadstate::stoping;
__thread.join();
__thread = null;
state = threadstate::stoped;
}
}
var isrunning(){
return state == threadstate::running;
}
}
enum future_status{
ready = 0,
timeout = 1,
deferred = 2 //延迟执行的暂未实现
};
class future{
var _thread = null;
var lock = new mutex();
future(var func,... params){
_thread = new thread(func,params);
}
var wait_for(var tm){
lock.lock();
var curtm = time.gettickcount();
while(time.gettickcount() - curtm < tm){
if(_thread.isdone()) {
lock.unlock();
return future_status::ready;
}
sleep(1);
}
lock.unlock();
return future_status::timeout;
}
var wait(){
lock.lock();
_thread.join();
_thread = null;
lock.unlock();
}
var get(){
return _thread.get();
}
}
namespace std{
//std::async(
var _async(var func,... params){
return new future(func,params);
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。