E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
Linux多线程
linux多线程
学习(七)——实现“生产者和消费者”
在上一篇文章中,利用信号量实现了线程间的互斥,这一篇将要利用信号量的互斥同步机制来实现一个经典实例,就是“生产者和消费者”。1、简单描述生产者和消费者的问题。有一个缓冲区和两个线程:生产者和消费者。生产者把产品放入缓冲区,而消费者从缓冲区中拿走。当缓冲区满时,生产者必须等待;另外,当缓冲区空时,消费者必须等待,并且缓冲区不能同时进行生产者和消费者的操作。#include#include#inclu
wtz1985
·
2020-07-12 16:10
linux
多线程编程
linux多线程
学习(二)——线程的创建和退出
在上一篇文章中对线程进行了简单的概述,它在系统中和编程的应用中,扮演的角色是不言而喻的。学习它、掌握它、吃透它是作为一个程序员的必须作为。在接下来的讲述中,所有线程的操作都是用户级的操作。在LINUX中,一般pthread线程库是一套通用的线程库,是由POSIX提出的,因此他的移植性是非常好的。创建线程实际上就是确定调用该线程函数的入口点,这里通常使用的函数是pthread_create。在线程创
wtz1985
·
2020-07-12 15:39
linux
多线程编程
linux多线程
的信号处理
3条原则:1:如果是异常产生的信号(比如程序错误,像SIGPIPE、SIGEGV这些),则只有产生异常的线程收到并处理2:如果是用pthread_kill产生的内部信号,则只有pthread_kill参数中指定的目标线程收到并处理。3:如果是外部使用kill命令产生的信号,通常是SIGINT、SIGHUP等jobcontrol信号,则会遍历所有线程,直到找到一个不阻塞该信号的线程,然后调用它来处理
grimlock44
·
2020-07-12 14:51
当
Linux多线程
遭遇Linux多进程
背景本文并不是介绍Linux多进程多线程编程的科普文,如果希望系统学习Linux编程,可以看[《Unix环境高级编程》第3版](https://book.douban.com/subject/1788421/)本文是描述多进程多线程编程中遇到过的一个坑,并从内核角度分析其原理。这里说的多进程多线程并不是单一的多进程或多线程,而是多进程和多线程,往往会在写一个大型应用时才会用到多进程多线程的模型。这
sunshineywz
·
2020-07-12 00:57
进程调度
Linux多线程
(十一)信号量实现条件变量
这份代码也是基于上两篇博文修改,利用信号量实现了条件变量:源码1:#include#include#include#include#includetypedefstruct{intres;sem_tsem;}Result;void*func_set(void*arg){Result*r=(Result*)arg;inti=1,sum=0;for(;ires=sum;printf("thepthre
qq_38211852
·
2020-07-11 18:03
linux 信号
参考http://blog.chinaunix.net/uid-12274566-id-3050955.html
linux多线程
信号总结(一)1.在多线程环境下,产生的信号是传递给整个进程的,一般而言,
poject
·
2020-07-11 14:51
linux
当
Linux多线程
遭遇Linux多进程
作者简介:廖威雄,目前就职于珠海全志科技股份有限公司从事linux嵌入式系统(TinaLinux)的开发,主要负责文件系统和存储的开发和维护,兼顾linux测试系统的设计和持续集成的维护。拆书帮珠海百岛分舵的组织长老,二级拆书家,热爱学习,热爱分享。##背景本文并不是介绍Linux多进程多线程编程的科普文,如果希望系统学习Linux编程,可以看[《Unix环境高级编程》第3版](https://b
Linux阅码场
·
2020-07-11 09:15
muduo源码学习笔记(1)
前言:对于muduo库,我觉得,光
Linux多线程
上提到的一些实现,还是不够的,在base/里面,还有/net里面提供了很多不错的实现,值得去学习,暑假算是看看muduo的百分之八十的源码,并对其进行了一次实现
梦花火
·
2020-07-11 08:41
C++
Unix网络编程
Muduo
多线程编程(一)——线程的创建、等待、分离、结合与终止
linux多线程
设计包括多任务程序的设计,并发程序设计,网络程序设计,数据共享等。Linux系统下的多线程遵循POSI
YPT_victory
·
2020-07-10 13:48
操作系统
多线程
Linux
线程退出
线程分离
线程终止
一个例子玩转
linux多线程
问题(创建 执行 条件变量 ......)
一个例子玩转
linux多线程
问题(创建执行条件变量......)ZZ自http://hi.baidu.com/��ѩ����/blog/item/b18de21cbf0ad3024134179a.html
weixin_30909575
·
2020-07-10 07:01
Linux多线程
实践(10) --使用 C++11 编写 Linux 多线程程序
在这个多核时代,如何充分利用每个CPU内核是一个绕不开的话题,从需要为成千上万的用户同时提供服务的服务端应用程序,到需要同时打开十几个页面,每个页面都有几十上百个链接的web浏览器应用程序,从保持着几t甚或几p的数据的数据库系统,到手机上的一个有良好用户响应能力的app,为了充分利用每个CPU内核,都会想到是否可以使用多线程技术。这里所说的“充分利用”包含了两个层面的意思,一个是使用到所有的内核,
weixin_30412167
·
2020-07-10 06:33
Linux多线程
实践(6) --Posix读写锁解决读者写者问题
Posix读写锁intpthread_rwlock_init(pthread_rwlock_t*restrictrwlock,constpthread_rwlockattr_t*restrictattr);intpthread_rwlock_destroy(pthread_rwlock_t*rwlock);intpthread_rwlock_rdlock(pthread_rwlock_t*rwlo
weixin_30252155
·
2020-07-10 06:58
linux多线程
-互斥&条件变量与同步
多线程代码问题描述我们都知道,进程是操作系统对运行程序资源分配的基本单位,而线程是程序逻辑,调用的基本单位。在多线程的程序中,多个线程共享临界区资源,那么就会有问题:比如#include#include#include#includeintg_val=10;void*test1(void*args){g_val=20;printf("in%s:g_val=%d\n",__func__,g_val)
susandebug
·
2020-07-10 03:53
C++
多线程
linux多线程
之线程资源的释放
一般来说,对一段运行代码进行加锁然后解锁,如下所示:pthread_mutex_lock(&mutex);//运行代码;pthread_mutex_unlock(&mutex);如果在运行代码这块发生错误,有异常,导致这个线程异常退出,那么怎么办,pthread_unlock没有得到调用,那么这个锁资源没有解锁。可以用下面的方法修改。pthread_cleanup_push(pthread_mut
summer_liuwei
·
2020-07-10 02:24
C/C++
Linux下的多线程编程
Linux下的多线程编程代码改变世界Posts-106,Articles-0,Comments-1616CnblogsDashboardLoginHOMECONTACTGALLERYRSS吴秦(Tyler)
Linux
stevedusunan
·
2020-07-10 02:28
linux多线程
之读写锁
基本概念:读写锁也叫做共享互斥锁。当读写锁是写加锁状态时,在这个锁被解锁之前,所有试图对这个锁加锁的线程都会被阻塞。当读写锁在读加锁状态,所有试图以读模式对它进行加锁的线程都可以得到访问权。与互斥量相比,读写锁在使用之前必须初始化,在释放它们底层的内存之前必须销毁。一、锁的初始化与销毁PTHREAD_RWLOCK_DESTROY(P)POSIXProgrammer'sManualPTHREAD_R
阿卡基YUAN
·
2020-07-09 21:12
Linux__IPC
Linux多线程
之读写锁
概述一般大家对读写锁应该有一个认知,当读数据比修改数据频繁,我们可以采用读写锁。读写锁的分配规则如下:只要没有线程持有某个给定的读写锁用于写时,那么任意数目的线程可以持有该读写锁用于读;仅当没有线程持有某个给定的读写锁用于读或写时,才能分配该读写锁用于读。获取与释放读写锁读写锁的类型是pthread_rwlock_t,如果这个类型的某个变量是静态分配的,那么可以通过PTHREAD_RWLOCK_I
cncoderwang
·
2020-07-09 15:14
Linux线程同步
linux多线程
之自旋锁
基本概念:何谓自旋锁?它是为实现保护共享资源而提出一种锁机制。其实,自旋锁与互斥锁比较类似,它们都是为了解决对某项资源的互斥使用。无论是互斥锁,还是自旋锁,在任何时刻,最多只能有一个保持者,也就说,在任何时刻最多只能有一个执行单元获得锁。但是两者在调度机制上略有不同。对于互斥锁,如果资源已经被占用,资源申请者只能进入睡眠状态。但是自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,调用者就
带鱼兄
·
2020-07-09 15:09
linux之线程操作
linux
多线程
自旋锁
线程同步
线程安全
读写锁应用浅谈
后端开发常常碰到多线程同步问题,也就会经常用到锁,其中关于读写锁,大家还争论不休,主要是很多人会倾向于使用读写锁,认为读写锁能比普通的互斥锁能带来性能的提升,这里先把陈硕大佬总结的贴出来吧(摘自
LINUX
straka
·
2020-07-09 13:17
C++
software
golang
当
Linux多线程
遭遇Linux多进程
##背景本文并不是介绍Linux多进程多线程编程的科普文,如果希望系统学习Linux编程,可以看[《Unix环境高级编程》第3版](https://book.douban.com/subject/1788421/)本文是描述多进程多线程编程中遇到过的一个坑,并从内核角度分析其原理。这里说的多进程多线程并不是单一的**多进程或多线程**,而是**多进程和多线程**,往往会在写一个大型应用时才会用到多
confirmwz
·
2020-07-09 13:32
linux
进程管理
std::string的Copy-on-Write:不如想象中美好
转载地址:http://www.cnblogs.com/promise6522/archive/2012/03/22/2412686.html可结合陈硕《
Linux多线程
服务端编程》12.7节再探std
SIGXXL
·
2020-07-09 09:59
C/C++
muduo网络库(1):muduo库整体框架
〇、背景0.1、本文背景在学习陈硕《
Linux多线程
服务端编程:使用muduoC++网络库》muduo源代码的过程中,感觉代码架构较复杂:一是和boost相关的内容比较多,对现代C++编程理念不了解的人
李骁睿写技术的地方
·
2020-07-08 18:52
muduo
Linux多线程
编程----IO【select、poll、epoll】
IO操作多速度就下降IO数据的读和写IO的完成必须等到读事件(如磁盘拷贝每次要从磁盘查找数据)和写事件(允许写如写太快写满就要马上阻塞)的就绪IO是否高效:主要看一次IO中等的时间的比例的多少(等的时间比例越少越高效)就像钓鱼分两步:1等2钓(评价钓鱼技术高效是等的时间少钓的次数多)5中IO模型1阻塞式IO:等的时候自己等,数据搬迁也是由自己来操作,IO事件就绪时自己处理。期间什么也不做2非阻塞I
weixin_34162695
·
2020-07-08 17:12
Linux多线程
编程
线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许多操作系统所支持,包括Windows/NT,当然,也包括Linux。为什么有了进程的概念后,还要再引入线程呢?使用多线程到底有哪些好处?什
sdzxx2008
·
2020-07-08 04:16
linux
system
program
linux
多线程
destructor
null
signal
thread
c/c++:基于TCP协议实现Linux下客户端与服务器之间的通信,实现多线程、多进程服务器代码模板
目录TCP协议Linux多进程服务器代码模板:TCP协议
Linux多线程
服务器代码模板:客户端代码模板:TCP协议Linux多进程服务器代码模板:#include#include#include#include
陈宸-研究僧
·
2020-07-07 22:14
c/c++
宋宝华Linux培训笔记-
Linux多线程
1、POSIX标准多线程发送给进程下一组线程的信号将被共享,被其中任意一个线程处理。同一进程创建的线程同生死,如果收到一个kill信号,这一组task_struce都会退出。2、NPTL模型内核采用线程组的概念,task_struct增加了tgid,发送信号时能够发送到同一进程下的所有线程,getid会为同一进程下的所有线程返回相同的进程ID。如上图所示,所有线程虽然都有自己的pid,但是getp
Felven
·
2020-07-07 11:11
Felven在职场
Linux多线程
服务器端编程:使用muduo C++网络库 读书笔记
1.需要注意:scoped_ptr/shared_ptr/weak_ptr都是值语意,要么是栈上对象,或是其他对象的直接数据成员,或是标准容器里的元素。几乎不会有下面这种用法:shared_ptr*pFoo=newshared_ptr(newFoo);还要注意,如果这几种智能指针是对象x的数据成员,而它的模板参数T是个incomplete类型,那么x的析构函数不能是默认的或内联的,必须在.cpp文
huanzai2
·
2020-07-07 10:46
网络模型
c++
linux多线程
【8】mmap实现父子进程的共享内存通信,用信号量同步
1.创建文件。open,ftruncate2.将文件映射到内存。内存首地址存放一个sem_t实现进程的互斥。mmap,sem_init3.创建子进程。父子进程互斥地访问共享内存的内容。fork,sem_wait,sem_post4.取消映射。munmap由于需要同步或者互斥,因此需要sem_t,我们把他放在内存区的开头,那么真正可用的内存就是开头做一定偏移。维护一个指针,使指针指向实际数据区。就定
纯属虚构
·
2020-07-07 07:14
linux
Andoird使用AudioTrack以及OpenSLES渲染音频
主要的难点有
linux多线程
的同步,生产者消费者模型等等。
JabamiLight
·
2020-07-07 02:05
音视频
Android音视频开发
《
Linux多线程
服务端编程:使用muduo C++网络库》学习笔记,★firecat推荐★
4.9多线程与forkfork()一般不能在多线程中调用,因为Linux的fork只克隆当前线程的threadofctrl,不克隆其他线程。即,fork之后子进程只有一个线程,其他线程都消失了。7.2文件传输如果客户端故意只发起连接,不接收数据,那么要么服务器进程的文件描述符耗尽,要么占用很多服务器内存,因为每个连接会建立缓冲区。解决方法是:1、限制服务器的最大并发连接数2、用timingwhee
libaineu2004
·
2020-07-06 15:19
网络基础知识Web/Net
《
linux多线程
服务端编程muduo网络库的使用》读后感
断断续续读完这本书(应该说是这本书前八章介绍网络库的部分),书的后面几章,实际上为了读懂前面某些内容时,也翻了不少,不过太多东西我还没有能力拿下。事先虽然已经大致读完两本UNP,但依然没能一鼓作气看完这本书。一是C++基础实在太差,很多东西都是递归的去学习(比如书中提到单例->线程安全的单例->DLC(doublelockcheck)提高性能)。二是虽然了解基本socket编程(毕竟UNP中都是e
NearXDU
·
2020-07-06 12:40
muduo和多线程学习
Linux多线程
编程之创建两个子线程,分别执行子线程函数(注意编译方式)
#include#include//
Linux多线程
编程之创建两个子线程,分别执行子线程函数(注意编译方式)/*intpthread_join(pthread_tthread,void**retval)
辉夜星辰
·
2020-07-06 01:41
C语言程序设计
Linux多线程
服务端编程:使用muduo C++网络库
查看书籍详细信息:
Linux多线程
服务端编程:使用muduoC++网络库……编辑推荐示范在多核时代采用现代C++编写多线程TCP网络服务器的正规做法内容简介本书主要讲述采用现代C++在x86-64Linux
weixin_30664051
·
2020-07-05 21:43
关于intptr_t,64位linux系统中void *与int转换
学习
linux多线程
时看别人的示例代码直接将void*转化为int,在自己的程序中也这样写可是提示error:castfrom'void*'to'int'losesprecision[-fpermissive
szw4090416
·
2020-07-05 14:14
C/C++
Linux
我发觉需要区分单纯的Linux c/c++服务器开发和嵌入式软件工程师
我发觉需要区分单纯的Linuxc/c++服务器开发和嵌入式软件工程师里面要求的要会
Linux多线程
编程等等的,一个毕竟是纯服务器的,一个是嵌入式软件工程师,还是有区别的。
诗筱涵
·
2020-07-05 12:56
找工作
Linux应用层编程
Linux 多线程服务端编程读书笔记(六)
Linux多线程
服务端编程笔记(六)从这一章开始开始探究muduo网络库部分第六章muduo网络库简介1、muduo网络库的一些介绍muduo是基于Reactor模式的网络库,其核心是个事件循环EventLoop
Baymax_yan
·
2020-07-05 07:29
muduo
网络编程
Linux 多线程服务端编程读书笔记 (五)
Linux多线程
服务端编程笔记(五)第五章高效的多线程日志1、两种日志交易日志诊断日志2、关键进程记录的日志日志通常需要记录:收到的每条内部消息的ID、关键字段、长度、hash值等。
Baymax_yan
·
2020-07-05 07:58
网络编程
muduo
Linux 多线程服务端编程读书笔记(三)
Linux多线程
服务端编程笔记(三)第三章多线程服务器的适用场合与常用编程模型1、进程与线程每个进程都有自己独立的地址空间线程的特点是共享地址空间,从而有效的共享数据。
Baymax_yan
·
2020-07-05 07:58
网络编程
muduo
linux 多线程服务端编程读书笔记(一)
linux多线程
服务端编程读书笔记(一)第一章线程安全的对象生命期管理1、class线程安全的三个条件:多个线程访问表现出正确的行为无论操作系统如何调度,以及线程的执行顺序如何调用端代码不需要额外的同步与协调动作由此
Baymax_yan
·
2020-07-05 07:58
网络编程
muduo
Linux 多线程服务端编程读书笔记(七)
Linux多线程
服务端编程读书笔记(七)第七章muduo编程示例1、UNP中五个简单的示例discard:丢弃所有收到的数据,简单的长连接TCP应用层协议voidDiscardServer::onMessage
Baymax_yan
·
2020-07-05 07:58
网络编程
muduo
Linux 多线程服务端编程读书笔记(四)
Linux多线程
服务端编程笔记(四)第四章C++多线程系统编程精要1、多线程编程最大的思维方式的转变有两点当前线程可能随时会被切换出去,被抢占多线程程序中事件的发生顺序不再是全局统一的先后关系2、多线程程序的正确性不能依赖任何一个线程的执行速度不能通过原地等待
Baymax_yan
·
2020-07-05 07:58
网络编程
muduo
linux读写锁应用
思路:
linux多线程
时,数据空间为公共,一个线程去添加数据,一个线程去修改数据,这个时候需要加入互斥锁,俩个线程如果同时去处理这个数据空间,数据会出错,除了线程锁之外,学习了一个读写锁详细函数说明:https
藏锋于鞘
·
2020-07-05 07:36
linux应用
Linux多线程
服务端编程学习(八):压力测试
本篇文章将测试网络库的吞吐量和并发事件处理效率,源码的地址为:https://github.com/freshman94/NetLib用pingpong协议测试网络库在单机上的吞吐量简单地说,pingpong协议是客户端和服务器都实现echo协议。当TCP连接建立时,客户端向服务端发送一些数据,服务器会echo回这些数据,然后客户端再echo回服务器。这些数据就会像乒乓球一样在客户端和服务端之间来
freshman94
·
2020-07-05 03:00
多线程网络编程
C++
linux编程
借shared_ptr实现copy-on-write (1)
在《
Linux多线程
服务端编程使用muduoC++网络库》2.8节说“借shared_ptr实现copy-on-write”。那么copy-on-write是怎样的技术?
X-Programer
·
2020-07-05 02:33
C++
Linux多线程
编程讲解之系列八
条件变量详解在上一篇文章结束时,我描述了一个比较特殊的难题:如果线程正在等待某个特定条件发生,它应该如何处理这种情况?它可以重复对互斥对象锁定和解锁,每次都会检查共享数据结构,以查找某个值。但这是在浪费时间和资源,而且这种繁忙查询的效率非常低。解决这个问题的最佳方法是使用pthread_cond_wait()调用来等待特殊条件发生。了解pthread_cond_wait()的作用非常重要--它是P
BAT-Battle
·
2020-07-05 02:30
linux
剑指bat
linux面试
多线程
bat
《
Linux多线程
服务端编程-使用muduo C++网络库》学习笔记——第一章
本文目录第1章线程安全的对象生命期管理构造不难销毁太难线程安全的Observer的难点智能指针shared_ptr/weak_ptrshared_ptrweak_ptr引申:unique_ptr插曲:系统地避免各种指针错误论shared_ptr的线程安全shared_ptr的技术陷阱对象池enable_shared_from_this弱回调第1章线程安全的对象生命期管理对象在销毁时,出现的竞态条件
Yanyu-CQU
·
2020-07-05 00:11
学习笔记
C++
C++
muduo
多线程
网络
linux多线程
网络编程详解(包含具体例子讲解)
与多进程相同,采用多线程可以实现并发服务器,并且由于线程的系统开销小,切换时间短,对于需要处理大量客户的服务器而言其具有更大的优势,实现多线程并发服务器的基本流程是:当建立连接以后,服务器调用pthread_create()函数产生新的线程,由新的线程来处理客户端的请求,同时主线程等待另一个客户的连接请求,其中的典型的模板如下:#include#include#include#include#in
lxh_hust
·
2020-07-04 21:45
unix网络编程学习
Linux多线程
——使用信号量同步线程
信号量、同步这些名词在进程间通信时就已经说过,在这里它们的意思是相同的,只不过是同步的对象不同而已。但是下面介绍的信号量的接口是用于线程的信号量,注意不要跟用于进程间通信的信号量混淆,关于用于进程间通信的信号量的详细介绍可以参阅我的另一篇博文:Linux进程间通信——使用信号量。相似地,线程同步是控制线程执行和访问临界区域的方法。一、什么是信号量线程的信号量与进程间通信中使用的信号量的概念是一样,
iteye_2116
·
2020-07-04 19:30
赖勇浩:推荐《Linux 多线程服务器端编程》
推荐《
Linux多线程
服务器端编程》赖勇浩(http://laiyonghao.com)最近,有一位朋友因为工作需要,需要从网游的客户端编程转向服务器端编程,找我推荐一本书。
iteye_11790
·
2020-07-04 18:37
Linux多线程
编程之条件变量
1条件变量简介在服务器编程中常用的线程池,多个线程会操作同一个任务队列,一旦发现任务队列中有新的任务,子线程将取出任务;这里因为是多线程操作,必然会涉及到用互斥锁保护任务队列的情况(否则其中一个线程操作了任务队列,取出线程到一半时,线程切换又取出相同任务)。但是互斥锁一个明显的缺点是它只有两种状态:锁定和非锁定。设想,每个线程为了获取新的任务不断得进行这样的操作:锁定任务队列,检查任务队列是否有新
idwtwt
·
2020-07-04 18:25
Linux杂项
服务器和网络
上一页
5
6
7
8
9
10
11
12
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他