202109-14 详解进程同步与互斥机制 目录一、什么是进程同步二、什么是进程互斥三、常见的进程同步与互斥机制一、什么是进程同步在多道批处理系统中,多个进程是可以并发执行的,但由于系统的资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性。那么,进程的异步性会带来什么问题呢?举个例子,如果有A、B两个进程分别负责读和写数据的操作,这两个线程是相互合作、相互依赖的。那么写数据应该发生在读数据之前。... 继续阅读 >
202107-17 详解PHP调用Go服务的正确方式 目录问题服务耦合服务抽取UnixDomainSockets进程间通信简单介绍适用场景代码实现Go实现的Trie树GoServerPHPClient小结效率杂谈问题服务耦合我们在开发过程中可能会遇到这样的情况:进程依赖于某服务,所以把服务耦合在进程代码中;服务初始化耗时长,拖慢了进程启动时间;服务运行要占用大量内存,多进程时内存损耗严重。文本匹配服务,它是消息处理流程中的一环,被多个消息处理进程依赖,每次初始化进程要6... 继续阅读 >
202107-17 浅谈并发处理PHP进程间通信之System V IPC 目录前言UnixSystemVIPC信号量共享内存消息队列函数介绍ftoksemaphore函数shared_memory函数代码实现小结前言它的安装和使用非常简单,在编译PHP时添加--enable-sysvsem--enable-sysvshm--enable-sysvmsg参数就可以,当然Windows上无法使用。今天我们仍旧使用上一篇文章的例子来介绍PHP内部实现的进程间通信,在了解它们的具体使用之前,先简单介绍一下信号量、共享内存、消息队列的概念。UnixSystemVIPC信号量信... 继续阅读 >
202107-17 浅谈并发处理PHP进程间通信之外部介质 目录进程间通信文件flock代码实现mysqlselectforupdate代码实现redisincrSETNX代码实现优化总结进程间通信进程间通信,指至少两个进程或线程间传送数据或信号的一些技术或方法。进程是计算机系统分配资源的最小单位(严格说来是线程)。每个进程都有自己的一部分独立的系统资源,彼此是隔离的。为了能使不同的进程互相访问资源并进行协调工作,才有了进程间通信。根据定义可知,要进行进程间通信,我们需要解决两个问题:互相... 继续阅读 >
202107-09 Android Messenger实现进程间通信及其原理 前言之前分析Android消息机制的源码时,曾遇到过replyTo、IMessenger等属性字段,当时只是说这些字段用于进程间通信,并未作深入分析。今天这篇文字就来演示一下使用Messenger如何进行进程间通信并分析其源码实现。Messenger进程间通信的流程Messenger顾名思义,即信使,那么它的作用就是满足不同进程两边的通信需要了。通常我们会写AIDL来实现进程间通信,其实简单的IPC可以用Messenger来实现,需要知道的是Messenger也是基于AIDL... 继续阅读 >
202012-23 c# 进程和线程的区别与联系 引入线程是为了减少程序在并发执行时所付出的时空开销。属性:轻型实体。它不拥有系统资源,只是有一点必不可少的、能保证独立运行的资源。独立调度和分派的基本单位。在多线程OS中,线程是独立运行的基本单位,因而也是独立调度和分派的基本单位,但由于线程很轻,故线程的切换非常迅速且开销小。可并发执行。在一个进程中的多个线程之间可以并发执行,甚至允许在一个进程中的所有线程都能并发执行;同样,不同进程中的线程... 继续阅读 >
202012-22 Python 多进程原理及实现 1进程的基本概念什么是进程?进程就是一个程序在一个数据集上的一次动态执行过程。进程一般由程序、数据集、进程控制块三部分组成。我们编写的程序用来描述进程要完成哪些功能以及如何完成;数据集则是程序在执行过程中所需要使用的资源;进程控制块用来记录进程的外部特征,描述进程的执行变化过程,系统可以利用它来控制和管理进程,它是系统感知进程存在的唯一标志。进程的生命周期:创建(New)、就绪(Runnable)、... 继续阅读 >
202012-07 Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版) selenium操作chrome浏览器需要有ChromeDriver驱动来协助。webdriver中关浏览器关闭有两个方法,一个叫quit,一个叫close。/***Closethecurrentwindow,quittingthebrowserifit'sthelastwindowcurrentlyopen.*/voidclose();/***Quitsthisdriver,closingeveryassociatedwindow.*/voidquit();通过查看以上官方声明文档,可以看出close方法是关闭当前窗口,这个当前如何理解?就是driver实例操作的页... 继续阅读 >
202011-22 java 进程是如何在Linux服务器上进行内存分配的 众所周知,Java进程在启动的时候我们可以通过-Xms和-Xmx来设置内存的上限和下限。直到我发现使用top命令监控的Java进程在-Xms设置4g的情况下占用的内存并不是4g,这就产生了一个疑问Linux服务器的内存到底是如何进行分配的。于是乎,我查阅了一些知乎,课程以及Linux相关的书籍。这里分享并记录的一下相关的知识。在Linux上运行的进程不仅限于Java。都有一个概念,逻辑内存(LogicMemory),而物理机真是持有的内存,我们称为物理... 继续阅读 >
202011-06 c# 如何实现不同进程之间的通信 进程之间的通信是为了解决不同进程之间的数据传输问题,这样可以让不同程序交互数据。实现进程通信的方式:1、剪切板;2、COM;3、内存映射文件;4、WCF1、剪切板Clipboard在进程间传送对象剪切板是一个供应用程序使用的公有区域。在.NET中定一个了一个DataFormats类,此类包含一些静态字段,定义了剪切板中可以存放的数据类型。使用Clipboard类可以向剪切板中放入数据。如将文字放入剪切板,使用方法SetDataObject即... 继续阅读 >
202010-30 c# 进程内部的同步 在线程里,如果需要共享数据,那么一定需要使用同步技术,确保一次只有一个线程访问和改变共享数据的状态。在.net中,lock语句、Interlocked类和Monitor类可用于进程内部的同步。1、lock语句与线程安全lock语句是设置锁定和解除锁定的一种简单方式。在使用lock语句之前,先进入另一个争用条件。例如:publicclassSharedState{publicintState{get;set;}}publicclassJob{SharedStatesharedState;publicJob... 继续阅读 >
202010-30 c# 进程之间的线程同步 Mutex类、Event类、SemaphoreSlim类和ReaderWriterLockSlim类等提供了多个进程之间的线程同步。 1、WaitHandle基类WaitHandle抽象类,用于等待一个信号的设置。可以根据其派生类的不同,等待不同的信号。异步委托的BeginInvoke()方法返回一个实现了IAsycResult接口的对象。使用IAsycResult接口可以用AsycWaitHandle属性访问WaitHandle基类。在调用WaitOne()方法时,线程会等待接收一个和等待句柄相关的信号:static... 继续阅读 >
202010-13 Java进程cpu频繁100%问题解决方案 1.在一次周末收到部门的反馈,线上机器java进程的cpu会频繁100%监控系统发了很多报警邮件,于是登录跳板机进行排查解决2.使用top命令查看进程情况发现每隔个几秒cpu就达到100%左右,报警邮件确实是诚不欺我,java进程有问题2.于是查看下到底是java进程下的哪个线程造成的cpu频繁100%使用top-Hp25567查看进程下的线程信息得到线程编号262503.查看该线程的栈信息printf'%x\n'26250获取26250的16进制数为668ajstack25567|grep... 继续阅读 >
202010-09 详解Android 进程 多进程如果需要的时候,app可以创建多进程。在进程里面各类组件元素的清单文件条目、、和—均支持android:process属性,此属性可以指定该组件应在哪个进程运行。默认进程就是主进程。其他进程一般来说都是子进程。2个activity在不同的进程里面,可以刷新UI吗?<activityandroid:name=".androidsample.ActivityProgressB"android:process=":progressb"/>测试结果:ActivityProgressB可以正常显示。这个其实很好理解,... 继续阅读 >
202010-09 如何优雅、安全的关闭MySQL进程 前言本文分析了mysqld进程关闭的过程,以及如何安全、缓和地关闭MySQL实例,对这个过程不甚清楚的同学可以参考下。关闭过程1、发起shutdown,发出SIGTERM信号2、有必要的话,新建一个关闭线程(shutdownthread)如果是客户端发起的关闭,则会新建一个专用的关闭线程如果是直接收到SIGTERM信号进行关闭的话,专门负责信号处理的线程就会负责关闭工作,或者新建一个独立的线程负责这个事当无法创建独立的关闭线程时(例如内... 继续阅读 >
202010-09 区分python中的进程与线程 今天整理的文章是给大家梳理Python的进程与线程的区别,没什么代码,希望大家能清楚知道他们的区别,什么情况用线程,什么情况用进程做到心中有数,希望大家能熟练掌握.进程的基本概念概念进程就是一个程序在一个数据集上的一次动态执行过程。进程一般由程序、数据集、进程控制块三部分组成。我们编写的程序用来描述进程要完成哪些功能以及如何完成;数据集则是程序在执行过程中所需要使用的资源;进程控制块用来记录进程的外部特... 继续阅读 >