求一个C语言多线程的程序
发布网友
发布时间:2022-10-26 01:17
我来回答
共1个回答
热心网友
时间:2023-09-12 18:31
这是我以前写的一个多线程范例,凑合看看吧:
#include <stdio.h>
#include <pthread.h>
#include <iostream>
using namespace std;
// 提示出租车到达的条件变量
pthread_cond_t taxiCond;
// 同步锁
pthread_mutex_t taxiMutex;
// 旅客到达等待出租车
void * traveler_arrive(void * name)
{
cout<< " Traveler: " <<(char *)name<< " needs a taxi now! " <<endl;
pthread_mutex_lock(&taxiMutex);
pthread_cond_wait (&taxiCond, &taxiMutex);
pthread_mutex_unlock (&taxiMutex);
cout<< " Traveler: " << (char *)name << " now got a taxi! " <<endl;
//pthread_exit( (void *)0 );
}
// 出租车到达
void * taxi_arrive(void *name)
{
cout<< " Taxi " <<(char *)name<< " arrives. " <<endl;
pthread_cond_signal(&taxiCond);
//pthread_exit( (void *)0 );
}
int main()
{
pthread_t thread;
pthread_attr_t threadAttr;
pthread_attr_init(&threadAttr);
pthread_create(&thread, & threadAttr, taxi_arrive, (void *)( " Jack " ));
sleep(1);
pthread_create(&thread, &threadAttr, traveler_arrive, (void *)( " Susan " ));
sleep(1);
pthread_create(&thread, &threadAttr, taxi_arrive, (void *)( " Mike " ));
sleep(1);
return 0;
}
C语言如何实现多线程同时运行
1、点击菜单栏的“Project”选项卡,下拉列表的最后一项“Project options...”是对当前工程的的属性进行设置的。2、选择弹出对话框中的“Compiler”选项卡。3、将其中的“Runtime Library”的选择改为“Multithreaded (LIB)”。4、将看到对话框最下面的文本框中发生了一些变化,新增了“-MT”选项,这...
c语言如何实现多线程同时运行
一、引入线程库 在C语言中实现多线程,首先需要引入相关的线程库。常见的线程库有pthreads库,它是可移植的,可以在多种操作系统上运行。通过包含对应的头文件,我们可以使用其中的函数来创建和管理线程。二、创建线程 在引入了线程库之后,我们需要创建线程。可以使用pthread_create函数来创建一个新的线程。
c语言如何实现多线程同时运行
5. 线程的结束和等待:每个线程执行完毕后需要被正确地结束,同时主线程可能需要等待其他线程完成其任务。可以使用`pthread_join`函数来等待一个或多个线程的结束。这个函数会阻塞调用线程,直到指定的线程结束为止。通过以上的步骤,你可以在C语言中实现多线程编程,使不同的任务可以同时执行,从而提高程序...
C语言多线程C多线程操作
在C语言中,多线程操作涉及一系列关键函数和概念。首先,线程的创建是通过调用`pthread_create`函数来实现的,其原型为`int pthread_create(pthread_t* restrict tidp, const pthread_attr_t* restrict attr, void* (start_rtn)(void), void* restrict arg);`。函数接收四个参数:线程id指针、线程...
C语言多线程的操作步骤
线程挂起:该函数的作用使得当前线程挂起,等待另一个线程返回才继续执行。也就是说当程序运行到这个地方时,程序会先停止,然后等线程id为thread的这个线程返回,然后程序才会断续执行。函数原型:intpthread_join(pthread_tthread, void **value_ptr);参数说明如下:thread等待退出线程的线程号;value_ptr...
怎么用C编多线程程序啊/给个例子。送20分
int i=1;int sum=0;for(i=1;i<=101;i++)sum=sum+i;printf("a[1] thread print:%d\n",sum);return 0;} void main(){ HANDLE a[2];DWORD dwT,dwY;a[0]=CreateThread(NULL,0,funA,0,0,&dwT);a[1]=CreateThread(NULL,0,funB,0,0,&dwY);WaitForMultipleObjects(2,a,TRUE,...
c语言中怎样创建多线程?
//创建线程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...
请问用C语言在windows上建立多线程需要用什么函数最好,
//本程序允许的生产和消费线程的总数;#define MAX_THREAD_NUM 64//定义一个结构,记录在测试文件中指定的每一个线程的参数struct ThreadInfo{ int serial; //线程序列号 char entity; //是P还是C double delay; //线程延迟 int thread_request[MAX_THREAD_NUM]; //线程请求队列 int n_request; //请求个...
请教关于C语言的多线程问题
这是有可能当主线程(即main函数)执行完后,新创建的线程还没来得及执行,所以应该使主线程先暂停,即使用Sleep()函数 include <windows.h> include <stdio.h> char testdir[100];DWORD WINAPI Fun1( LPVOID lpParameter ){ strcpy(testdir,"this is a test dir");MessageBox(NULL,testdir,"...
[高分,急]C语言,如何实现多线程,有具体方案,请提供!
实际上C语言是没有多线程的概念的,但是我们可以通过Task来实现多任务。简单的说,可以采取以下方案:定义一个主Task,将其置为常驻Task,用以进行Task调度和Task的启动/终了和交互的管理。定义一个Task优先级列表,用优先级来作为Task调度和管理的基础。定义一个共享域,和相应的事件分发/广播/传递的管理...