C++基础--多线程简单例子

 1 // MultiThreadTest.cpp : Defines the entry point for the console application.
 2 // Thread 创建,挂起等
 3 
 4 #include "stdafx.h"
 5 #include<Windows.h>
 6 #include<iostream>
 7 #include<string>
 8 using namespace std;
 9 DWORD WINAPI myThread(LPVOID argv);//声明一个线程函数
10 int _tmain(int argc, _TCHAR* argv[])
11 {
12     string s;
13     HANDLE myHandle;
14     do{
15         cin.clear();
16         cin.sync();
17         cin>>s;
18         switch(s.at(0)){
19         case '0':
20             myHandle=CreateThread(NULL,0,myThread,(LPVOID)s.c_str(),0,NULL);//创建线程
21             break;
22         case '1':
23             if(myHandle) SuspendThread(myHandle);//挂起线程
24             break;
25         case '2':
26             if(myHandle) ResumeThread(myHandle);//回复线程
27             break;
28         case '3':
29             if(myHandle) TerminateThread(myHandle,0);//终止线程
30             break;
31         case '4':
32             if(myHandle) SetThreadPriority(myHandle,THREAD_PRIORITY_NORMAL);//设定线程优先级
33             break;
34         default:
35             break;
36         }
37         cout<< s << endl;
38     }while(s != "exit" && s != "quit");
39     return 0;
40 }
41 DWORD WINAPI myThread(LPVOID argv){
42     int i=0;
43     char buff[200];
44     ZeroMemory(buff,sizeof(buff));
45     memcpy(buff,argv,200);
46     while(++i){
47         cout<<"Extra thread executing with argument string:"<<buff<<endl;
48         Sleep(10000);
49         if(i==40) ExitThread(0);
50     }
51 }
// MultiThreadTest.cpp : Defines the entry point for the console application.
//多线程,利用全局变量传值,通信.

#include "stdafx.h"
#include<Windows.h>
#include<iostream>
#include<string>
using namespace std;
volatile int ThreadData = 0;
void ThreadProcess()
{
    printf("sub thread process.\n");
    for(int i = 0 ; i < 6 ; i ++)
    {
        ThreadData+=1000;
        Sleep(1000);
        printf("Sub Thread Tick %5d! %5d\n",(i+1)*1000,ThreadData);
    }
    printf("Exit Sub Thread!\n");
}
int _tmain(int argc, _TCHAR* argv[])
{
    HANDLE hThread;
    DWORD ThreadID;
    hThread=CreateThread(NULL,
        0,
        (LPTHREAD_START_ROUTINE)ThreadProcess,
        NULL,
        0,
        &ThreadID);
    printf("main thread process\n");
    for(int i = 0 ; i < 10 ; i++)
    {
        ThreadData-=600;
        Sleep(600);
        printf("Main Thread Tick %5d! %5d\n",(i+1)*600,ThreadData);
    }
    printf("Main Thread Loop Finished!\n");
    system("pause");
    return 0;
}
posted @ 2012-06-25 10:29  Kingdom_0  阅读(725)  评论(0编辑  收藏  举报