线程传入参数

m_client->Send_MemFile((char*)indexbuf,i*sizeof(int),2);m_client->Send_MemFile(scrbuf... m_client->Send_MemFile((char *)indexbuf,i*sizeof(int),2);
m_client->Send_MemFile(scrbuf,i,3);

Send_MemFile函数里启动线程
如果第一过程和第二过程比较慢比如中间加Sleep(2000)那没2和3可以传入
如果比较快就只传入3不传入2 为什么?
CCriticalSection cs;

DWORD WINAPI fun(LPVOID lpParameter)
{
cs.Lock();
int a=*((int*)lpParameter);
CString ss;
ss.Format ("%d",a);
AfxMessageBox(ss);
cs.Unlock();
return 0;
}

int b;

void CText2Dlg::OnButton1()
{
// TODO: Add your control notification handler code here

b=2;
CreateThread(NULL,0,fun,(LPVOID)&b,0,NULL);
b=3;
CreateThread(NULL,0,fun,(LPVOID)&b,0,NULL);

}
展开
 我来答
BlueWanderer
2010-03-15 · TA获得超过9209个赞
知道大有可为答主
回答量:5673
采纳率:83%
帮助的人:2001万
展开全部
A 看黑板上的数->把黑板上的数加1写到黑板上
B -------------------->看黑板上的数->把黑板上的数加1写到黑板上

结果黑板上的数变成原来的数+2

A 看黑板上的数->把黑板上的数加1写到黑板上
B 看黑板上的数-------------->把黑板上的数加1写到黑板上

结果是原来的数+1

如果不进行人为的线程同步,以上两种情况的出现是随机的。
wolyqy
2010-03-15 · TA获得超过293个赞
知道小有建树答主
回答量:217
采纳率:0%
帮助的人:164万
展开全部
估计是你的线程还没执行的时候第二个线程就执行了,这个得看具体的程序了
可能是需要同步的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式