所在位置:主页 > 程序语言 > C语言多线程的操作步骤

C语言多线程的操作步骤

发布时间:2023-10-24 21:56来源:www.sf1369.com作者:宇宇

C语言多线程的操作步骤

线程创建

函数原型:intpthread_create(pthread_t*restrict tidp,const pthread_attr_t *restrict attr,void *(*start_rtn)(void),void *restrict arg);

返回值:若是成功建立线程返回0,否则返回错误的编号。

形式参数:pthread_t*restrict tidp要创建的线程的线程id指针;const pthread_attr_t *restrict attr创建线程时的线程属性;void *(start_rtn)(void)返回值是void类型的指针函数;void *restrict arg start_rtn的形参。

线程挂起:该函数的作用使得当前线程挂起,等待另洞差链一个线程返回才继续执行。也就是说当程序运行到这个地方时,程序会先停止,然后等线程id为thread的这个线程返回,然后程序才会断续执行。

函数原型:intpthread_join(pthread_tthread, void **value_ptr);

参数说明庆野如下:thread等待退纳孙出线程的线程号;value_ptr退出线程的返回值。

返回值:若成功,则返回0;若失败,则返回错误号。

线程退出

函数原型:voidpthread_exit(void *rval_ptr);

获取当前线程id

函数原型:pthread_tpthread_self(void);

互斥锁

创建pthread_mutex_init;销毁pthread_mutex_destroy;加锁pthread_mutex_lock;解锁pthread_mutex_unlock。

条件锁

创建pthread_cond_init;销毁pthread_cond_destroy;触发pthread_cond_signal;广播pthread_cond_broadcast;等待pthread_cond_wait。

求一个C语言多线程的程序

这是我以前写的一个多线程范例,凑合看看吧:

#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;

}