编程环境是vc6.0,代码如下:#include <windows.h>
#include <iostream>
using namespace std;
DWORD WINAPI Fun1Proc(LPVOID lp);
DWORD WINAPI Fun2Proc(LPVOID lp);
//HANDLE hMutex;
int ticket=100;int main()
{
HANDLE hThread1=CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);
HANDLE hThread2=CreateThread(NULL,0,Fun2Proc,NULL,0,NULL);
//hMutex=::CreateMutex(NULL,false,NULL);
::CloseHandle(hThread1);
::CloseHandle(hThread2);
::Sleep(4000);
return 0;
}
DWORD WINAPI Fun1Proc(LPVOID lp)
{
while(true)
{
if(ticket>0)
{
std::cout<<"this is1: "<<ticket--<<std::endl;
}
else
break;
}
return 0;
}
DWORD WINAPI Fun2Proc(LPVOID lp)
{
while(true)
{
if(ticket>0)
{
std::cout<<"this is2: "<<ticket--<<std::endl;
}
else
break;
}
return 0;
}
以上输出,线程输出就会乱套,如果用#include <iostream.h> 而不是用#include <iostream> using namespace std; cout输出就正常,请问这是什么原因?
#include <iostream>
using namespace std;
DWORD WINAPI Fun1Proc(LPVOID lp);
DWORD WINAPI Fun2Proc(LPVOID lp);
//HANDLE hMutex;
int ticket=100;int main()
{
HANDLE hThread1=CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);
HANDLE hThread2=CreateThread(NULL,0,Fun2Proc,NULL,0,NULL);
//hMutex=::CreateMutex(NULL,false,NULL);
::CloseHandle(hThread1);
::CloseHandle(hThread2);
::Sleep(4000);
return 0;
}
DWORD WINAPI Fun1Proc(LPVOID lp)
{
while(true)
{
if(ticket>0)
{
std::cout<<"this is1: "<<ticket--<<std::endl;
}
else
break;
}
return 0;
}
DWORD WINAPI Fun2Proc(LPVOID lp)
{
while(true)
{
if(ticket>0)
{
std::cout<<"this is2: "<<ticket--<<std::endl;
}
else
break;
}
return 0;
}
以上输出,线程输出就会乱套,如果用#include <iostream.h> 而不是用#include <iostream> using namespace std; cout输出就正常,请问这是什么原因?
解决方案 »
- MFC 网络编程问题。
- MFC 组合框添加变量后,编译通过,运行后出错是什么原因
- VC#怎样捕获JPEG格式图像的数据流(十六进制)并转换成JPEG的图片在控件上显示
- UNICODE下,COMBOX组合框里的数据乱码
- ffmpeg解码DirectShow播放时的图象闪烁问题
- ACCESS数据库操作问题
- 基于ppp协议开发一个chat程序,利用winsock接受信息后可否从提中取出链路层信息?用什么可以实现?大虾请进!谢谢!
- 修改内存后出现非法操作。
- 有没有vc++ 6.0 SP3下载的网址
- vc6中使用stlport居然会出现编译错误!
- 请教!单文档客户区大小如何固定??
- 请教个静态成员变量的问题
#include <iostream> usingnamespace std;
cout输出为什么会不同啊?
试试在cout后调用fflush(stdout);
8.0 9.0都是使用的#include<iostream> usingnamespace std
7.0忘记了 反正和版本有关
dosomething();如果是6.0 在后面就不用重新声明变量i但是在后面的版本,i就被定义为循环体里的局部变量了