×

c多线程编程实例

c多线程编程实例(c++多线程同时运行两个函数该怎样编程啊)

admin admin 发表于2024-03-08 09:57:01 浏览22 评论0

抢沙发发表评论

其实c多线程编程实例的问题并不复杂,但是又很多的朋友都不太了解c++多线程同时运行两个函数该怎样编程啊,因此呢,今天小编就来为大家分享c多线程编程实例的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

本文目录

c++多线程同时运行两个函数该怎样编程啊

1、C++多线程也可以使用UNIX C的库函数,pthread_mutex_t,pthread_create,pthread_cond_t,pthread_detach,pthread_mutex_lock/unlock,等等。在使用多线程的时候,你需要先创建线程,使用pthread_create,你可以使主线程等待子线程使用pthread_join,也可以使线程分离,使用pthread_detach。线程使用中最大的问题就是同步问题,一般使用生产着消费者模型进行处理,使用条件变量pthread_cond_t,pthread_mutex,pthread_cond_wait来实现。2、例程://创建5个线程#include 《pthread.h》#include 《stdlib.h》void* work_thread(void* arg){//线程执行体return 0;}int main(int argc,char* argv){int nthread = 5;//创建线程的个数pthread_t tid;//声明一个线程ID的变量;for(int i=0;i《nthread;i++){pthread_create(&tid,NULL,work_thread,NULL);}sleep(60);//睡眠一分钟,你可以看下线程的运行情况,不然主进程会很快节结束了。}pthread_create(&tid,NULL,work_thread,NULL);//创建线程的函数,第一个参数返回线程的ID;第二个参数是线程的属性,一般都置为NULL;第三个参数是线程函数,线程在启动以后,会自动执行这个函数;第四个参数是线程函数的参数,如果有需要传递给线程函数的参数,可以放在这个位置,可以是基础类型,如果你有不止一个参数想传进线程函数,可以做一个结构体,然后传入。

用C语言在windows或者Linux上面,编写一个多线程程序

#include《stdio.h》#include《stdlib.h》#include《windows.h》DWORD WINAPI ThreadProc(LPVOID lpParam) {int *pt=(int*)lpParam;printf("I am tread %d\r\n",*pt);}int main(){ const int Count=4;int datas;DWORD dwThreadId;HANDLE hThread; int i; for(i=0;i《Count;i++){datas=i+1;hThread); }WaitForMultipleObjects(Count,hThread,TRUE,INFINITE);for(i=0;i《Count;i++){CloseHandle(hThread);}system("PAUSE"); return EXIT_SUCCESS; }

c 语言多线程编程 , 创建四个线程 , 依次往一个char str[1000]型全局 数组中 写 字符 A,B,C,D

#include "stdio.h"#include "process.h"#include "stdlib.h"#include "windows.h"//4个全局事件变量,用于控制写入顺序HANDLE event1,event2,event3,event4;int count=0;//计数变量char str={0};//void thread1(LPVOID param){ while(TRUE) {  WaitForSingleObject(event4,INFINITE);  if(count》=4)//  {   SetEvent(event1);   break;  }  str=’A’;  SetEvent(event1); }}void thread2(LPVOID param){ while(TRUE) {  WaitForSingleObject(event1,INFINITE);  if(count》=4)//  {   SetEvent(event2);   break;  }  str=’B’;  SetEvent(event2); }}void thread3(LPVOID param){ while(TRUE) {  WaitForSingleObject(event2,INFINITE);  if(count》=4)//  {   SetEvent(event3);   break;  }  str=’C’;  SetEvent(event3); }}void thread4(LPVOID param){ while(TRUE) {  WaitForSingleObject(event3,INFINITE);  if(count》=4)//  {   SetEvent(event4);   break;  }  str=’D’;  SetEvent(event4); } _endthread();}//void main(){ HANDLE hthread; event1=CreateEvent(NULL,FALSE,FALSE,NULL); event2=CreateEvent(NULL,FALSE,FALSE,NULL); event3=CreateEvent(NULL,FALSE,FALSE,NULL); event4=CreateEvent(NULL,FALSE,FALSE,NULL); hthread=(HANDLE)_beginthread(thread1,0,NULL); hthread=(HANDLE)_beginthread(thread2,0,NULL); hthread=(HANDLE)_beginthread(thread3,0,NULL); hthread=(HANDLE)_beginthread(thread4,0,NULL); SetEvent(event4); WaitForMultipleObjects(4,hthread,TRUE,INFINITE); printf("%s\n",str);}

VC++ 最简单的多线程

#include 《windows.h》#include 《iostream》using namespace std;DWORD WINAPI MyThread1(PVOID pvParam){ for(int a=0;a《10;a++) { cout《《"Thread1"《《endl; Sleep(10000); } return 0;}DWORD WINAPI MyThread2(PVOID pvParam){ for(int b=0;b《3;b++) { cout《《"Thread2"《《endl; Sleep(2000); } return 0;}DWORD WINAPI MyThread3(PVOID pvParam){ for(int c=0;c《7;c++) { cout《《"Thread3"《《endl; Sleep(7000); } return 0;}int main(){ HANDLE hThread1 = CreateThread(NULL, 0, MyThread1, NULL, 0, NULL); HANDLE hThread2 = CreateThread(NULL, 0, MyThread2, NULL, 0, NULL); HANDLE hThread3 = CreateThread(NULL, 0, MyThread3, NULL, 0, NULL); Sleep(5000); cout《《"Main"《《endl; CloseHandle(hThread1); CloseHandle(hThread2); CloseHandle(hThread3); return 0;}首先创建一个线程实用API CreateThread , 还有就是一个线程函数的原型.HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpsa, DWORD cbStack, LPTHREAD_START_ROUTINE lpStartAddr, LPVOID lpvThreadParam, DWORD fdwCreate, LPDWORD lpIDThread); DWORD WINAPI ThreadProc( LPVOID lpParameter);还有就是Sleep这个函数是放弃自己运行的时间片....

c语言中怎样创建多线程最好有一个例子,谢谢!!

/*这是我写的最简单的多线程程序,看懂不?*/#include 《windows.h》#include 《stdio.h》//#include 《strsafe.h》DWORD WINAPI ThreadProc1( LPVOID lpParam ) { int i=0,j=0; while(1) { printf("hello,this thread 1 ...\n"); //延时 for(i=0;i《200000000;i++) { ; } }} DWORD WINAPI ThreadProc2( LPVOID lpParam ) { int i=0,j=0; while(1) { printf("hello,this thread 2 ...\n"); //延时 for(i=0;i《200000000;i++) { ; } }} void main(){ int i=0; //创建线程1 CreateThread( NULL, // default security attributes 0, // use default stack size ThreadProc1, // thread function NULL, // argument to thread function 0, // use default creation flags NULL); // returns the thread identifier //创建线程2 CreateThread( NULL, // default security attributes 0, // use default stack size ThreadProc2, // thread function NULL, // argument to thread function 0, // use default creation flags NULL); // returns the thread identifier //让主线程进入循环,主线程若退出,子线程1,2会被系统“杀死” while(1) { printf("hello,this thread 0 ...\n"); //延时 for(i=0;i《200000000;i++) {;} }}

关于c多线程编程实例到此分享完毕,希望能帮助到您。