写了一个最简单的命令行多线程程序
一个main函数建立两个线程,并运行这两个线程。
两个线程只是
whie(true)
{
cout<<"test Thread1" ;
Sleep(1000);
}
之类的。程序编译正常,但每次运行的时候并不是立刻将两个线程的cout结果输出到屏幕上
而是要等一些时间,一次输出很多多次循环的运行结果,不知道是什么原因???
一个main函数建立两个线程,并运行这两个线程。
两个线程只是
whie(true)
{
cout<<"test Thread1" ;
Sleep(1000);
}
之类的。程序编译正常,但每次运行的时候并不是立刻将两个线程的cout结果输出到屏幕上
而是要等一些时间,一次输出很多多次循环的运行结果,不知道是什么原因???
解决方案 »
- 一个最基础的问题搞糊涂了,类里构造函数中的指针。
- MFC有没有反射机制?
- 为什么GetActiveDocument()指针为空
- 多线程socket出错10038
- 如何把二进制文件的某部分删除掉?
- 如何对一个16位的双声道的wave文件进行分贝计算得到它的平均分贝数值?
- 大家帮忙测试一下:BitBlt函数,最后一个参数如果是SRCAND的话执行要300毫秒,如果是SRCCOPY就只要10毫秒了。
- <<Windows程序设计>>里的一个程序,看过的请进.
- 我从网上下了一个dll的源程序,怎么编译也没出现dll文件,只有里lib文件,这怎么回事
- CPen 的高级用法。
- 简单问题!!!
- 我怎么实现这个功能?不够加分~!
#include "stdafx.h"DWORD WINAPI MTOne(LPVOID param);
DWORD WINAPI MTTwo(LPVOID param); int main(int argc, char* argv[])
{
int inp=0;
HANDLE hand=CreateThread (NULL, 5, MTOne, (void*)&inp, CREATE_SUSPENDED, NULL);
HANDLE hand2=CreateThread (NULL, 0, MTTwo, (void*)&inp, CREATE_SUSPENDED, NULL);
cout<<"create Thread OK"<<" "<<hand<<" "<<hand2<<endl;
int Isrun=0; while(true){
cin>>inp;
if(inp==1) //运行线程
{
if(Isrun==0){
Isrun=1;
cout<<ResumeThread(hand)<<" ";
cout<<ResumeThread(hand2)<<endl;
}
}
else if(inp==2){
cout<<"break Thread"<<endl;
break;
} else if(inp=3) //暂停线程
{
if(Isrun==1){
Isrun=0;
cout<<SuspendThread(hand)<<" ";
cout<<SuspendThread(hand2)<<endl;
}
} }; cout<<"停止运行线程:"<<TerminateThread(hand,1)<<endl;
cout<<"停止运行线程:"<<TerminateThread(hand2,1)<<endl;
printf("Hello World!\n");
return 0;
}DWORD WINAPI MTOne(LPVOID param){
while(true)
{
Sleep(1000);
cout<<"hi! ";
}
return 0;
} DWORD WINAPI MTTwo(LPVOID param){
while(true)
{
Sleep(3000);
cout<<"joy! ";
}
return 0;
}
while(true)
{
Sleep(1000);
cout<<"hi! ";
}
return 0;
} DWORD WINAPI MTTwo(LPVOID param){
while(true)
{
Sleep(3000);
cout<<"joy! ";
}
return 0;
}
你的这两个线程函数怎么是死循环呢!
我的main函数可以控制阿
当用户输入1,开始运行这两个函数
当用户输入2,就停止线程。
输入3,暂停线程
问题在于当我输入1,程序不会立刻将两个线程运行结果打印出来,
当我输入2的时候程序才会将前面的运行结果打印出来,给我的感觉是向屏幕输出的数据被缓存了,没有立刻输出的。