比如在一个 子 对话框类中有函数
int nTotal=0;
Save()
{
for(int i;i=0;i<100)
{
.......; //这个地方比较耗时
nTotal++;
}
}当Save()函数被执行后,nTotal将逐步加1直到100为止.1.如果在for循环尚没有结束的时候,主对话框向这个子对话框发送了nTotal=0的消息;这个时候会对循环中的nTotal产生影响吗?再从0开始?还是说这个来自主对话框的消息必须等到for循环结束了之后,才给nTotal赋值为0?2.如果在for循环尚没有结束的时候,主对话框向这个子对话框发送消息要求再次执行Save()函数,这个子对话框会怎么处理?会引起混乱吗?还是第二个等到第一个结束后再开始?谢谢了,很绕,别见怪!
int nTotal=0;
Save()
{
for(int i;i=0;i<100)
{
.......; //这个地方比较耗时
nTotal++;
}
}当Save()函数被执行后,nTotal将逐步加1直到100为止.1.如果在for循环尚没有结束的时候,主对话框向这个子对话框发送了nTotal=0的消息;这个时候会对循环中的nTotal产生影响吗?再从0开始?还是说这个来自主对话框的消息必须等到for循环结束了之后,才给nTotal赋值为0?2.如果在for循环尚没有结束的时候,主对话框向这个子对话框发送消息要求再次执行Save()函数,这个子对话框会怎么处理?会引起混乱吗?还是第二个等到第一个结束后再开始?谢谢了,很绕,别见怪!
解决方案 »
- 用VC的ADO对象SQL编程为什么_variant_t类型的变量会被截断?
- IOCP的一点疑问
- 支持asp.net的免费空间
- 对话框上放个按钮,消息路径是:对话框接受消息,把消息传给按钮,按钮没有处理
- 关于多播跨网段通信的问题
- 有什么获得时间的函数,能精确到毫秒以上?
- 我用mysql c api mysql_fetch_row有个问题。
- 请教高手: 一个VC++ MFC 的小问题? 不盛感激!
- 求解?我有一家大软件公司的软件编程规范,是C++的,谁要???留下E-MAIL.
- 精通Bitmap的大虾请指教
- 在对话框A中通过按钮生成另一个对话框B,同时设置B中的OnTimer,然后在B中主动销毁自身如何实现?
- 如何获得进程的权限?
2,同时执行,会引起混乱,所以你要自己搞好同步
============================
如果是多线程的情况下,是会产生影响的,如果单线程是不会出现你所说的情况的,因为在单线程时当for循环在执行时,主窗口不可能会执行代码。如果在for循环尚没有结束的时候,主对话框向这个子对话框发送消息要求再次执行Save()函数,这个子对话框会怎么处理?会引起混乱吗?还是第二个等到第一个结束后再开始?
=========================================================
这上问题和上面的一样。感觉楼主对线程没有什么概念,最好看看书
先确定Save函数中有没有针对消息的处理,如果没有,则在执行Save函数过程中不会受到外面的影响。
InterlockedIncrement()