
linux线程
weixin_48080013
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
线程条件控制实现线程的同步
1.条件操作有5种操作:创建,销毁,触发,广播和等待2.与条件变量相关的api创建和销毁条件变量int pthread_cond_init(pthread_cond_t *restrict cond, const pthread_condattr_t *restrict attr);int pthread_cond_destroy(pthread_cond_t cond);返回值:若成功返回0,否则返回错误编号除非需要创建一个非默认属性的条件变量,否则pthread_cond_init函数原创 2020-12-25 21:51:04 · 97 阅读 · 0 评论 -
线程概述(与进程的区别及线程的优势)
1.进程与线程的区别:典型的UNIX/Linux进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事情。有了多个控制线程后,在程序设计时可以吧进程设计成在同一时刻做不止一件事情,每个线程各自处理独立的任务。进程是程序执行时的一个实例,是担当分配系统资源(CPU时间,内存等)的基本单位。在面向线程设计的系统中,进程本身不是基本运行单位,而是线程的容器。程序本身只是指令,数据及其组织形式的描述,进程才是程序的真正运行实例。线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际原创 2020-12-23 21:42:45 · 224 阅读 · 0 评论 -
线程创建等待,退出及线程的应用
相关的api(因为线程的API不是标准C库,所以gcc编译时,后面要加上 -lpthread)1.线程创建**int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void *(*start_rtn) (void ), void restrict arg);返回值:若成功返回0,否则返回错误编号说明:当pthread_creat成功返回时,由tidp指向的内存单元被设置为新创建线程的线程原创 2020-12-24 20:12:03 · 115 阅读 · 0 评论 -
线程共享内存空间的代码验证
demo:#include <stdio.h>#include <pthread.h>int g_data = 0; void *func1(void *arg){ printf("t1:%ld pthread is creat\n",(unsigned long)pthread_self()); printf("t1:param is %d\n", *((int *)arg)); while(1){ printf("t原创 2020-12-24 20:25:57 · 206 阅读 · 1 评论 -
线程同步之互斥量加锁解锁
互斥量从本质上来说是一把锁,在访问共享资源前对互斥量进行加锁,在访问完成后释放互斥量上的锁。对互斥量进行加锁后,任何其他试图再次对互斥量加锁的线程将会被阻塞,直到当前线程释放该互斥锁。如果释放互斥锁时有多个线程阻塞,所有在该互斥锁上的阻塞线程都会变成可运行状态,第一个变为可运行状态的线程可以对互斥量加锁,其他线程将会看到互斥锁依然被锁住,只能回去等待它重新变为可用。在这种方式下,每次只有一个线程可以向前运行。与互斥锁相关的api1.创建及销毁互斥锁int pthread_mutex_init(pth原创 2020-12-24 21:26:26 · 219 阅读 · 1 评论 -
Linux线程什么情况造成死锁
什么是死锁?1)一般情况下,如果同一线程先后两次调用lock,在第二次调用时,由于锁已经被占用,该线程会挂起等待别的线程释放锁,然而锁正在被自己占用着的,该线程又被挂起而没有机会释放锁,因此就永远处于挂起等待状态了,这就叫死锁2)另一种:若线程A获得了锁1,线程B获得了锁2,这时线程A调用lock试图获得锁2,结果是需要挂起等待线程B释放锁2,而这时线程B也调用lock试图获得锁1,结果是需要挂起等待线程A释放锁1,于是线程A和线程B都永远处于挂起状态了demo:#include <std原创 2020-12-25 20:58:13 · 151 阅读 · 0 评论