1. 实现
由于IO是阻塞的,所以要实现轮询IO的结果,需要将IO放入线程中处理,IO的处理结果作为给线程的exit code返回。这里用“CBaseThread”简单的将线程处理函数封装到类中
unsigned CSyncIOByPolling::ThreadWork()
{
return IO();
}
在OnStart()中,先依次启动2个线程处理IO,然后轮询,一旦有任何一个IO的线程处理完毕后就发送结果
为了不把CPU占满,这里每次轮询设了一个sleep的时间间隔,然后通过NotifyProgress()函数通知UI当前的进度。
![]()
bool CSyncIOByPolling::OnStart()
{
int nRetArray[] = {-1, -1};
HANDLE hThreadArray[] = {NULL, NULL};
int nThreadNum = sizeof(hThreadArray) / sizeof(hThreadArray[0]);
for (int i = 0; i < nThreadNum; i++)
{
hThreadArray[i] = StartThread();
订阅专栏 解锁全文
3万+

被折叠的 条评论
为什么被折叠?



