多线程&&进程&&开发板的初步认识

一、多线程

1、线程

是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

2、多线程

2.1 安装pthread库

Ubuntu默认是没有pthread库的,需要安装。输入命令:

sudo apt-get install -y glibc-doc manpages-posix-dev

2.2 创建线程

2.2.1创建线程与终止示例

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAP0xlbW9uJw==,size_20,color_FFFFFF,t_70,g_se,x_16

(1)创建线程函数

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAP0xlbW9uJw==,size_13,color_FFFFFF,t_70,g_se,x_16

int pthread_create(

       pthread_t *thread, 

  const pthread_attr_t *attr,

  void *(*start_routine)(void*),

    void *arg

); 

参数说明:

thread 指针指向新线程ID结构体;

attr 含有各种线程属性的属性对象;

start_routine 线程开始执行时调用的函数名;

arg 给start_routine函数提供参数,类型为void *.

返回值 成功返回0,否则返回错误码。

(2) 终止线程函数

void pthread_exit(void *retval);

retval是一个void类型的指针,可以将线程的返回值当作pthread_exit( )的参数传入。

在创建的线程的顶层执行return线程会隐式地调用pthread_exit( )。

(3)线程ID

线程ID可以看作为线程的句柄,用来引用一个线程。类型 “ pthread_t ” ,是一个结构体;

获取线程自身ID:

通过函数:my_tid = pthread_self( )

函数原型:pthread_t pthread_self(void);

比较线程ID是否相等:

pthread_equal( )函数

2.2.2 运行

 

(1)用makefile将.c编译后,输入命令以运行

./1.pthread_create_exit.out

(2)结果如下:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAP0xlbW9uJw==,size_20,color_FFFFFF,t_70,g_se,x_16

2.3 线程连接与分离

2.3.1 示例

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAP0xlbW9uJw==,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAP0xlbW9uJw==,size_20,color_FFFFFF,t_70,g_se,x_16 

(1)连接函数原型

int pthread_join(pthread_t thread, void**retavl);

(2)分离函数原型

int pthread_detach(pthread_t thread);

 2.3.2 运行结果

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAP0xlbW9uJw==,size_20,color_FFFFFF,t_70,g_se,x_16

 2.4 线程初始化与销毁

示例

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAP0xlbW9uJw==,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAP0xlbW9uJw==,size_20,color_FFFFFF,t_70,g_se,x_16 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAP0xlbW9uJw==,size_20,color_FFFFFF,t_70,g_se,x_16 

(1)初始化函数

int pthread_attr_init(pthread_attr_t *attr);

(2)销毁函数

int pthread_attr_destroy(pthread_attr_t *attr);

2.5 互斥锁 & 容量锁</

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值