同一程序在单、双核主机中内存占用率差别极大,附代码。该如何解决

同一程序在单、双核主机中内存占用率差别极大,附代码。
同一程序在单、双核主机中内存占用率差别极大,附代码

typedef int(_cdecl *Connect)(int i,int b);
HINSTANCE hinstDLL=NULL; 

hinstDLL=LoadLibrary("hidlink.dll");


Connect Proc;

Proc = (Connect)GetProcAddress (hinstDLL,"Sendcfg");


while (m_ShanCi)
{

if(m_Bool == TRUE)
  {
m_LiangDu_R+=m_ShanSu_R;  
m_LiangDu_G+=m_ShanSu_G;
m_LiangDu_B+=m_ShanSu_B;

if (m_LiangDu_R >= m_ShanSe_R)
{
m_LiangDu_R=m_ShanSe_R;
}

if (m_LiangDu_G >= m_ShanSe_G)
{
m_LiangDu_G=m_ShanSe_G;
}

if (m_LiangDu_B >= m_ShanSe_B)
{
m_LiangDu_B=m_ShanSe_B;
}

if(m_LiangDu_R == m_ShanSe_R && m_LiangDu_G == m_ShanSe_G && m_LiangDu_B == m_ShanSe_B)
{
m_Bool=FALSE;
}
}
else  
{
m_LiangDu_R-=m_ShanSu_R;  
m_LiangDu_G-=m_ShanSu_G;
m_LiangDu_B-=m_ShanSu_B;

if (m_LiangDu_R <= 31)
{
m_LiangDu_R=31; 
}


if (m_LiangDu_G <= 31)
{
m_LiangDu_G=31; 
}


if (m_LiangDu_B <= 31)
{
m_LiangDu_B=31; 
}
if(m_LiangDu_R == 31 && m_LiangDu_G == 31 && m_LiangDu_B == 31)
{
m_Bool=TRUE;  
m_ShanCi--;
}
}

Proc(n_ID_R,m_LiangDu_R);
Proc(n_ID_G,m_LiangDu_G);
Proc(n_ID_B,m_LiangDu_B);
}

------解决方案--------------------
多线程在单/多核处理器上的差别主要是减少了CPU切换线程的开销,你的程序也应该是同样的。不需要频繁的切换线程自然就不需要频繁的保存现场。

——个人看法。