x265多线程-线程/线程池

//< Simplistic portable thread class.  Shutdown signalling left to derived class
// 对线程的一层对象化包装
class Thread
{
private:

    ThreadHandle thread;

public:

    Thread(){
    	thread = 0;
    }

    // 销毁线程
    virtual ~Thread(){
    	if (thread)
        	CloseHandle(thread);
    }

    //< Derived class must implement ThreadMain.
	// 类运行主函数,重写
    virtual void threadMain() = 0;

    //< Returns true if thread was successfully created
	// 创建一个线程并启动,允许线程主函数threadMain()
    bool start(){
    	DWORD threadId;

    	thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadShim, this, 0, &threadId);

    	return threadId > 0;
    }
	 
	// 无期限等待停止线程
    void stop(){
    	if (thread)
        	WaitForSingleObject(thread, INFINITE);
    }
};

static DWORD WINAPI ThreadShim(Thread *instance)
{
    STACK_ALIGN(stackAlignMain, instance);

    return 0;
}

/* C shim for forced stack alignment */
static void stackAlignMain(Thread *instance)
{
    // defer processing to the virtual function implemented in the derived class
    instance->threadMain();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值