
并发编程
文章平均质量分 51
我要精通C++
这个作者很懒,什么都没留下…
展开
-
【并发编程】pthread_detach(pthread_self())的作用
pthread_detach(pthread_self());的作用原创 2021-09-18 10:19:00 · 927 阅读 · 0 评论 -
【并发编程】pthread_setconcurrency的作用
线程同步----条件变量,pthread_cond_wait()与pthread_cond_signal()到底干了什么原创 2021-08-11 10:10:55 · 596 阅读 · 0 评论 -
【并发编程】学习读写锁
1.声明读写锁变量pthread_rwlock_tg_MapsLock;2.初始化读写锁pthread_rwlock_init(&g_MapsLock,NULL);3.使用读锁pthread_rwlock_rdlock(&g_MapsLock);map<int, vector<GroupRulers> > mapRules = g_mapFilterRules;pthread_rwlock_unlock(&g_MapsLock);4...原创 2021-06-29 10:36:20 · 218 阅读 · 0 评论 -
【并发编程】Atomic的实现原理
1.直接操作内存,使用Unsafe这个类2.使用 getIntVolatile(var1, var2)获取线程间共享的变量3.采用CAS的尝试机制(核心所在),代码如下: public final int getAndAddInt(Object var1, long var2, int var4) { int var5; do { var5 = this.getIntVolatile(var1, var2); } while.原创 2021-05-18 21:34:54 · 1685 阅读 · 0 评论 -
线程同步与互斥,线程同步的方式
线程同步与互斥,线程同步的方式原创 2021-05-19 08:25:15 · 562 阅读 · 0 评论 -
【并发编程笔记及文章汇总】
1.【C语言】线程一些基本概念及相关基础函数2.【C语言】线程终止与线程属性3.【C语言】父子进程实现交替同步数数测试4.【C语言】测试一个进程中可以创建多少个线程5.【C语言】标准输出也可以是一个共享资源6.【C语言】线程中的死锁7.【C语言】并发编程之线程的读写锁8....原创 2021-01-31 10:59:00 · 231 阅读 · 0 评论 -
SYSV IPC-消息队列
占位原创 2020-10-18 13:00:57 · 535 阅读 · 0 评论 -
SYSV IPC-共享内存
占位原创 2020-10-18 12:53:31 · 1064 阅读 · 0 评论 -
利用互斥量实现进程间同步
1.互斥量数据结构D:\005-代码\001-开源项目源码\005-gnuc\glibc-2.31.tar\glibc-2.31\glibc-2.31\sysdeps\nptl\bits\pthreadtypes.htypedef union{ struct __pthread_mutex_s __data; char __size[__SIZEOF_PTHREAD_MUTEX_T]; long int __align;} pthread_mutex_t;D:\005-代码\001原创 2020-10-17 16:43:40 · 552 阅读 · 0 评论 -
并发编程之信号量
1.概念信号量是进化版的互斥锁,由于互斥锁的粒度比较大,如果我们希望在多线程间对某一个对象的部分数据进行共享,使用互斥锁是没有办法实现的,只能将整个数据对象锁住,这样虽然达到了多线程操作共享数据是保证数据正确性的目的,却无形中导致线程的并发性下降。线程从并行执行变成了串行执行,与直接使用使用单进程无差异。互斥量是相对一种折中的处理方式,既能保证同步,数据不混乱,又能提高线程并发.2.主要应用函数及数据类型头文件: #include <semaphore.h>函原创 2020-10-17 11:36:39 · 544 阅读 · 0 评论 -
并发编程之条件变量
1.概念线程中的一个概念,和进程中的信号的概念很像,等待某一个条件的发生。条件变量可以使得线程睡眠以等待某种条件的发生。它是利用线程间共享的全局变量进行线程间同步的一种机制,主要包含两个动作:线程为等待其他线程的某个条件成立而挂起,线程满足了某个条件而向其他线程发出信号。为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起。条件变量会造成线程阻塞,它作为一个线程之间通信的方式,给多线程提供了一个会合的场所。2.相关主要函数及变量类型 头文件: #include <pthread.原创 2020-10-16 14:26:02 · 318 阅读 · 0 评论 -
各种锁
原创 2020-10-16 14:23:57 · 161 阅读 · 0 评论 -
并发编程之线程的读写锁
1.概念读写锁实际上是一种特殊的自旋锁,它把共享资源的访问划分成读者和写者,读者只能拥有对共享资源的读权限,写者则需要对共享资源进行写操作。读写锁并不是两把锁,它是一个名字叫做读写锁的锁,可以拥有读模式下加锁状态,写模式下加锁状态和不加锁者三种状态。它与互斥量类似,对比互斥量,使用读写锁可以使得运行有更高的并行性。2.读写锁的状态a.读模式下加锁状态(读锁)b.写模式下加锁状态(写锁)c.不加锁状态3.读写锁特性精炼概括:写独占,读共享。更具体点可如下:1.读写锁是“写模原创 2020-10-16 10:41:03 · 243 阅读 · 0 评论 -
线程中的死锁
1.线程死锁的情形1.线程试图对同一个互斥量A加锁两次(一般在编码的时候会有误操作);2.线程1拥有A锁,请求获得B锁;线程2拥有B锁,请求获得A锁(两把锁和两个共享资源)。2. 线程死锁问题的解决方法针对情况1,需要细心一点,不可同时连续对一个资源加两把锁,加锁之前要查看是否解锁完再去加锁。针对情况2,可以用try_lock进行一些处理,当拿不到所有的锁的时候,就释放已经占用的锁。3.死锁的简单演示...原创 2020-10-16 01:44:49 · 477 阅读 · 0 评论 -
标准输出也可以是一个共享资源
目标需求:想要主线程和子线程分别完整打印出HELLOWORLD和helloword,每个线程都要分两次打印,不能一起打印。实现这个需求。分析:标准输出对于两个线程来说也是共享资源,需要加上对共享资源的保护。这里需要实现的是线程间的同步。不符合要求的代码:#include <string.h>#include <pthread.h>#include <stdlib.h>#include <unistd.h>#include &l原创 2020-10-15 23:52:31 · 281 阅读 · 0 评论 -
测试一个进程中可以创建多少个线程
测试场景1:测试环境:测试代码:#include <stdio.h>#include <pthread.h>#include <string.h>#include <stdlib.h>void *th_fun(void *args){ while(1) sleep(1);}int main(void){ pthread_t tid; int i = 1,err; while(1) ..原创 2020-10-15 19:58:27 · 324 阅读 · 0 评论 -
父子进程实现交替同步数数测试1-全局变量的异步IO
测试环境1(32位1个核心)测试环境2(64位4个核心)测试代码:#include <stdio.h>#include <signal.h>#include <unistd.h>#include <stdlib.h>int g_n = 0;int g_flag = 0;void sys_err(char * str){ perror(str); exit(1);}void do_sig_child(int nu.原创 2020-10-15 18:09:22 · 385 阅读 · 0 评论 -
线程终止与线程属性
一.线程终止方式及测试1.线程终止方法如果需要只终止某个线程而不终止某个进程,可以有三种方法:1.非主线程线程从线程函数中return,这种方法对主线程不合适,从main函数return相当于调用exit,会导致整个进程结束;2.一个线程可以调用pthread_cancle终止同一进程中的另一个线程。3.线程可以调用pthread_exit来终止自己,主控线程如果只想自己的线程终止,可以用pthread_exit来结束主控线程而其他线程和总进程不受影响。注意:同一个线程间,pthr原创 2020-10-14 19:44:17 · 220 阅读 · 0 评论 -
线程一些基本概念及相关基础函数(创建线程,获取线程号,退出线程,回收线程资源,取消线程,设置线程分离属性)
1.从进程与线程之间的区别和联系来理解线程线程是轻量级的进程,两者创建函数在底层的clone函数; 进程可以蜕化成线程,当一个进程只有一个线程的时候,可以说这个进程只有一个主线程; 从内核看进程和线程都是一样的,都有不同的PCB,但是PCB中指向内存资源的三级页表是相同的(linux中是四级页表,经典UNIX中是三级页表); 在美国人的眼中,线程就是寄存器和内核栈; 在linux下,线程是最小的执行单位,进程是最小的分配资源单位。 ...1.创建线程函数头文件及函数原型:#i原创 2020-10-14 12:10:43 · 577 阅读 · 0 评论