您好,欢迎来到爱够旅游网。
搜索
您的当前位置:首页线程互斥锁

线程互斥锁

来源:爱够旅游网
1.线程相关概念 2.线程创建 3.线程的等待与退出 4.互斥锁

1.线程相关概念

服务器有时需要大量并发大量进程响应客户端,如果用进程去响应,服务器需要分配大量资源,从而导致服务器的性能下降,从而提出了多线程的概念

多线程相关概念

1,线程是一个轻量级的进程

2,线程也是cpu调度的基本单位,但不是资源分配的基本单位

3,线程共享进程的资源(堆区,数据区,代码区,文件表,环境变量等),唯一不共享的是栈去,线程有自己的栈区

4,每一个进程都有一个主线程(main)线程都是由进程创建的,主线程结束,进程也随之结束,子线程也随之结束

5,线程微观是串行执行的,宏观是并行执行的

2线程创建

进程:fork()/vfork() 线程:pthread_create()

#include

int pthread_create(pthread_t *thread,const *(*start_routine)(void*), void*restrict arg);

Thread:接受线性号

Attr:接受线程的属性 一般NULL start_routine:线程处理函数

Arg:这个参数会传个线程处理函数 返回值:成功返回0 失败返回错误码

获取线程号:pthread_self()

编译多线程的时候需要加入动态库-lpthread

pthread_attr_t*attr,void

3线程的等待与退出

进程exit() /_exit() wait() /waitpid() 线程pthread_exit() pthread_join()

#include

void pthread_exit(void *value_ptr);

value_ptr:退出码

#include int pthread_join(pthread_t thread, void **value_ptr); Thread:等待那个线程结束 value_ptr:接受退出码

返回值:成功返回0 失败返回错误码

4互斥锁

互斥锁是一种锁机制,一个线程在访问共享资源前加锁,其他线程在给共享资源加锁,加锁不成功,线程会发生阻塞,直到第一个线程解锁,才能加锁成功

1,使用互斥锁

1,定义互斥锁

Pthread_mutex_t mutex;//定义mutex锁 2,初始化锁

动态方式

Pthread_mutex_init()

int pthread_mutex_init(pthread_mutex_t*mutex, const pthread_mutexattr_t *attr);

Mutex:锁

Attr:互斥锁的属性,一般赋NULL 返回值:成功返回0失败返回错误码 静态方式

pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; 3,共享资源前加锁

Int Pthread_mutex_lock(pthread_mutex*mutex) 返回值,成功返回0失败返回错误码

Int Pthread_mutex_trylock(pthread_mutex_t*mutex) 尝试加锁,加锁不成功立即返回 4共享资源后解锁

Int Pthread_mutex_unlock(pthread_mutex_t*mutex) 5,销毁锁

Int Pthread_mutex_destroy(pthread_mutex_t*mutex)

练习:火车订票 共10张票,没创建一个线程,订一张票,当票数为0时,后来的线程订票失败

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igbc.cn 版权所有 湘ICP备2023023988号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务