需要引入头文件 #include<pthread.h>
1.创建线程
int
pthread_create(pthread_t *pid,const phread_attr_t *attr,void *(*handler)(void *),void *hand_attr);
(1)pid 表示创建线程的id指针
(2)attr表示线程的属性,如果为NULL,表示默认设置
(3)handler表示一个回调函数,即线程所要运行的函数
(4)hand_attr 表示回调函数参数地址
返回值类型为int ,0 表示创建成功,非0表示不成功。
2.等待线程结束
int
pthread_join(pthread_t *pid,void **value_ptr)
(1)pid 表示创建的线程的id指针
(2)value_ptr 表示返回值地址指针存放位置的指针
返回类型为int , 0表示结束成功,非0表示不成功。
3.线程结束
void pthread_exit(void *value_ptr)
(1)value_ptr 表示返回值指针
例子
#include <stdio.h>
#include <pthread.h>
void * handler1(void *arg)
{
int i;
for(i=0;i<3;i++)
{
printf("handler1\n");
sleep(1);
}
}
void * handler2(void *arg)
{
int i;
for(i=0;i<4;i++)
{
printf("handler2\n");
sleep(1);
}
}
int main(int argc, char *argv[])
{
//声明2个线程id
pthread_t pid1;
pthread_t pid2;
//创建2个线程
printf("begin\n");
if(pthread_create((pthread_t *)&pid1,NULL,(void*)handler1,NULL))
{
printf("can't create new thread\n");
return -1;
}
if(pthread_create((pthread_t *)&pid2,NULL,(void*)handler2,NULL))
{
printf("can't create new thread\n");
return -1;
}
//等待2个线程结束
if(pthread_join(pid1,NULL))
{
printf("can't join thread\n");
return -1;
}
if(pthread_join(pid2,NULL))
{
printf("can't join thread\n");
return -1;
}
printf("over\n");
return 0;
}
linux 编译与运行
运行结果
- 大小: 860 Bytes
- 大小: 725 Bytes
分享到:
相关推荐
多线程从基础讲起,包括线程基础、线程属性、互斥量、共享内存、条件变量。
windows环境下C语言多线程实现网络编程,多人聊天室,[总结].pdf
多线程编程基础.pdf
学东西,往往实例才是最让人感兴趣的,老是学基础理论,不动手,感觉没有成就感,呵呵。 下面先来一个实例。我们通过创建两个线程来实现对一个数的递加。 或许这个实例没有实际运用的价值,但是稍微改动一下,我们...
本文主要是对C语言多线程中变量累加问题进行分析,感性趣的朋友可以参考下。
在一些计算机专业相关的书籍中,大家经常听说“多线程”这个概念。那么什么是“多线程”?什么时候使用“多线程”?在程序设计中使用“多线程”有...本文对“多线程”进行了简单的介绍,并给出了其C代码的实现框架。
一份基础的关于C++的多线程编程例子,对于初学C++的多线程编程有帮助
C++ 如何正确的使用线程 释放线程资源 魔鬼作坊学游戏辅助制作 moguizuofang.com
由C语言实现的单线程高并发的网络基础库.zip
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
由C语言实现的基础库,提供的功能有: 基础库 co_vec 向量数组 co_dict 字典(哈希表),内部有一个链表用于遍历,使用它可以实现lrucache co_set 集合,内部由红黑树实现。 co_list 双向链表 co_queue 循环队列 co_...
基于jeremie_SYSU的基础上部署心得,由于是2019,同其不一样,配置方法略有差异,特整理记录,适用VS2019免费版。
c++/C语言 后端学习 基础学习 基础资料,c带书签
11-线程同步、线程、同步、死锁、文件、哲学家就餐、衔接哔哩哔哩Linux基础第49之后
分别介绍了嵌入式系统基础知识、linux环境下c语言的开发、bootloader、linux环境下c语言编程基础、linux shell编程、创建嵌入式系统开发环境、c程序基础、嵌入式gui技术、嵌入式文件系统与存储技术、嵌入式linux设备...
通过运用嵌入式软件环境,《嵌入式软件基础:C语言与汇编的融合(翻译版)》介绍多线程程序设计、可抢占式系统与非可抢占式系统、共享资源和调度,从而为操作系统、实时系统、计算机网络及基于多处理器的设计等后续课程...
线程是个大话题,这个系列可能会有好几遍关于线程的,先从基础的开始,热热身。 一些基础概念 线程(Thread)是操作系统能够进行运算调度的最小单位。它是进程中的实际运作单位,一个进程中可以启动多个线程,每个...
①Linux基础学习:文件类命令、压缩命令、进程命令、服务器搭建、用户管理、vim学习、gcc/g++编译、linux静态库/动态库、gdb学习、makefile基础学习、C语言文件操作类函数、C语言目录操作函数等; ②linux系统编程...
如果下载后无法直接运行,则查看电脑是否有F盘,如果没有,可修改jar包中的配置文件,将默认路径设置到其他盘,如C盘 说明: 1、这是myDownloader2.0自制下载器,在1.0版本的基础上做了修正和功能上的扩展; 2、该...