问一个线程模型的问题
标题党,哈哈,帮我看看下面模型怎么优化下吧,总感觉比较乱。
说明:数据库连接因为其他问题,只能放在线程函数中。
UINT ReadResource(LPVOID pParam)
{
InterlockedIncrement(&g_nReadThreadNum);
sReadThreadInit* pRdInit = (sReadThreadInit*)pParam;
CANNaviReadResource cReadResource;
初始化成员变量
BOOL bRet = cReadResource.OpenConnect(); //连接数据库
从全局队列中取数据(两个队列A,B,A中没数据才从B中取
while(bRet)
{
如果两个队列都没数据,线程挂起,并把线程状态设置未挂起
判断退出标志
if(A队列有数据)
{
执行对应函数
if(g_bEndThreadAll || g_nWriteThreadNum == 0) //判断用户发出退出请求或者写线程退出
{
if(当前只要自己处于工作状态)
{
将所有读线程的状态设置为退出;
激活所有线程;
}
break;
}
}
else
{
if(当前只要自己处于工作状态)
{
将所有读线程的状态设置为退出;
激活所有线程;
}
break;
}
从全局队列中取数据(两个队列A,B,A中没数据才从B中取
}
delete pRdInit;
InterlockedDecrement(&g_nReadThreadNum);
return 0;
}