多进程/多线程
xiaojun11-
勤能补拙,奋发ing
展开
-
多线程与多进程的区别(4)
很想写点关于多进程和多线程的东西,我确实很爱他们。但是每每想动手写点关于他们的东西,却总是求全心理作祟,始终动不了手。今天终于下了决心,写点东西,以后可以再修修补补也无妨。 一.为何需要多进程(或者多线程),为何需要并发?这个问题或许本身都不是个问题。但是对于没有接触过多进程编程的朋友来说,他们确实无法感受到并发的魅力以及必要性。我想,只要你不是整天都写那种转载 2016-06-26 20:49:42 · 384 阅读 · 0 评论 -
互斥锁和条件变量
pthread_cond_wait总和一个互斥锁结合使用。在调用pthread_cond_wait前要先获取锁。pthread_cond_wait函数执行时先自动释放指定的锁,然后等待条件变量的变化。在函数调用返回之前,自动将指定的互斥量重新锁住。int pthread_cond_signal(pthread_cond_t * cond);pthread_cond_signal通过条...转载 2016-06-01 18:28:51 · 359 阅读 · 0 评论 -
StateThreads--高性能、高并发、高扩展性和可读性的网络服务器架构
译文在后面。State Threads for Internet ApplicationsIntroductionState Threads is an application library which provides a foundation for writing fast and highly scalable Internet Applications on U转载 2016-10-08 18:05:11 · 836 阅读 · 0 评论 -
Linux上如何查看某个进程的线程
这里提供了在Linux上显示某个进程的线程的几种方式。方法/步骤问题: 我的程序在其内部创建并执行了多个线程,我怎样才能在该程序创建线程后监控其中单个线程?我想要看到带有它们名称的单个线程详细情况(如,CPU/内存使用率)。线程是现代操作系统上进行并行执行的一个流行的编程方面的抽象概念。当一个程序内有多个线程被叉分出用转载 2016-11-11 15:33:23 · 516 阅读 · 0 评论 -
API函数详解:CreateSemaphore函数
Windows API函数 Visual Basic 语法格式声明 Declare Function CreateSemaphore Lib "kernel32" Alias "CreateSemaphoreA" (lpSemaphoreAttributes As SECURITY_ATTRIBUTES, ByVal lInitialCount As Long, ByVal lMaximumC...转载 2015-04-14 15:14:00 · 8340 阅读 · 0 评论 -
线程中CreateEvent和SetEvent及WaitForSingleObject的用法
首先介绍CreateEvent是创建windows事件的意思,作用主要用在判断线程退出,线程锁定方面.CreateEvent 函功能描述:创建或打开一个命名的或无名的事件对象. EVENT有两种状态:发信号,不发信号。 SetEvent/ResetEvent分别将EVENT置为这两种状态分别是发信号与不发信号。 WaitForSingleObject(...转载 2015-04-14 15:16:36 · 624 阅读 · 0 评论 -
[Android实例] Handler+ExecutorService(线程池)+MessageQueue模式+缓存模式
android线程池的理解,晚上在家无事 预习了一下android异步加载的例子,也学习到了一个很重要的东东 那就是线程池+缓存 下面看他们的理解。[size=1.8em]Handler+Runnable模式 我们先看一个并不是异步线程加载的例子,使用 Handler+Runnable模式。 这里为何不是新开线程的原因请参看这篇文章:Android Runnable 运行在那个线...转载 2016-04-26 18:28:11 · 501 阅读 · 0 评论 -
一个windows线程类的实现
Thread.h #ifndef __THREAD_H__ #define __THREAD_H__ #include <string> #include <windows.h> #include <process.h> class Runnable { public: ...转载 2016-06-02 10:48:18 · 723 阅读 · 0 评论 -
使用QueueUserWorkerItem实现的线程池封装
此线程池所依赖的线程类,请参看《一个Windows C++的线程类实现》:http://blog.csdn.net/huyiyang2010/archive/2010/08/10/5801597.aspx SystemThreadPool.h #define __SYSTEM_THREAD_POOL__ #include "Thread.h" #include...转载 2016-06-02 10:49:02 · 537 阅读 · 0 评论 -
一个Windows C++的线程池的实现
此线程池所依赖的线程类,请参看《一个Windows C++的线程类实现》:http://blog.csdn.net/huyiyang2010/archive/2010/08/10/5801597.aspx ThreadPoolExecutor.h #ifndef __THREAD_POOL_EXECUTOR__ #define __THREAD_POOL_EXECUTOR...转载 2016-06-02 10:47:28 · 996 阅读 · 0 评论 -
线程池原理及创建(C++实现)
本文给出了一个通用的线程池框架,该框架将与线程执行相关的任务进行了高层次的抽象,使之与具体的执行任务无关。另外该线程池具有动态伸缩性,它能根据执行任务的轻重自动调整线程池中线程的数量。文章的最后,我们给出一个简单示例程序,通过该示例程序,我们会发现,通过该线程池框架执行多线程任务是多么的简单。为什么需要线程池目前的大多数网络服务器,包括Web服务器、Email服务器以及数据库服务器等都具有...转载 2016-06-02 10:46:23 · 344 阅读 · 0 评论 -
Linux 下C语言简单实现线程池
C语言简单实现线程池0 前言网上关于线程池的例子还是不少,简单明了的倒是比较少,看了网上的资料,打算借鉴网上的一些例子,自己实现以下。线程的概念就不多说,首先说一下多线程的好处:多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。那么为什么又需要线程池呢?我们知道应用程序创建一个对象,然后销毁对象是很耗费资源的。创建线...转载 2016-06-03 18:14:31 · 514 阅读 · 0 评论 -
线程函数总结
1、pthread_create 创建线程 ,包含线程id,执行函数,函数的参数,线程的属性(优先级等)2、pthread_cancle 释放线程 异步释放 pthread_exit 释放线程,同步释放,还需要执行完,才能释放资源3、pthread_join 等待线程 pthread_self 返原创 2015-03-05 23:13:26 · 434 阅读 · 0 评论 -
准则3:多线程程序里不准使用fork
鉄則3: マルチスレッドのプログラムでのforkはやめよう准则3:多线程程序里不准使用fork マルチスレッドのプログラムで、「自スレッド以外のスレッドが存在している状態」でfork 何が起きるか能引起什么问题呢? 実例から見てみましょう。次のコードを実行すると、子プロセスは実行開始直後のdoit() 呼び出し時、高い確率でデッドロックします。那看看实例吧.一执转载 2016-06-26 20:50:51 · 911 阅读 · 0 评论 -
fork之后,子进程从父进程那继承了什么
知道子进程自父进程继承什么或未继承什么将有助于我们。下面这个名单会因为 不同Unix的实现而发生变化,所以或许准确性有了水份。请注意子进程得到的是 这些东西的 *拷贝*,不是它们本身。由子进程自父进程继承到:进程的资格(真实(real)/有效(effective)/已保存(saved) 用户号(UIDs)和组号(GIDs))环境(environment)堆栈转载 2016-06-26 20:52:23 · 9815 阅读 · 0 评论 -
Linux 文件锁
摘自: http://blog.csdn.net/zhx6044/article/details/8003728 在文已经共享的情况下如何操作,也就是当多个进程同时操作同一个文件时,我们怎么保证文件数据的正确性。linux通常采用的方法是文件上锁,来避免共享资源的产生竞争状态。 文件锁包括建议性锁和强转载 2016-07-19 15:46:43 · 336 阅读 · 0 评论 -
Linux进程间通信——使用共享内存
转载 :http://blog.csdn.net/ljianhui/article/details/10253345 下面将讲解进程间通信的另一种方式,使用共享内存。一、什么是共享内存顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一转载 2016-07-19 18:48:46 · 299 阅读 · 0 评论 -
Linux进程间通信——使用命名管道
转载自: http://blog.csdn.net/ljianhui/article/details/10202699在前一篇文章——Linux进程间通信——使用匿名管道中,我们看到了如何使用匿名管道来在进程之间传递数据,同时也看到了这个方式的一个缺陷,就是这些进程都由一个共同的祖先进程启动,这给我们在不相关的的进程之间交换数据带来了不方便。这里将会介绍进程的另一种通信方式——命名管道,来转载 2016-07-19 18:52:44 · 323 阅读 · 0 评论 -
Linux进程间通信——使用匿名管道
转载自:http://blog.csdn.net/ljianhui/article/details/10168031在前面,介绍了一种进程间的通信方式:使用信号,我们创建通知事件,并通过它引起响应,但传递的信息只是一个信号值。这里将介绍另一种进程间通信的方式——匿名管道,通过它进程间可以交换更多有用的数据。一、什么是管道如果你使用过Linux的命令,那么对于管道转载 2016-07-19 18:54:14 · 310 阅读 · 0 评论 -
Linux进程间通信——使用消息队列
下面来说说如何用不用消息队列来进行进程间的通信,消息队列与命名管道有很多相似之处。有关命名管道的更多内容可以参阅我的另一篇文章:Linux进程间通信——使用命名管道一、什么是消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞转载 2016-07-19 18:51:27 · 660 阅读 · 0 评论 -
Linux进程间通信——使用信号量
这篇文章将讲述别一种进程间通信的机制——信号量。注意请不要把它与之前所说的信号混淆起来,信号与信号量是不同的两种事物。有关信号的更多内容,可以阅读我的另一篇文章:Linux进程间通信——使用信号。下面就进入信号量的讲解。一、什么是信号量为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行转载 2016-07-19 18:50:18 · 491 阅读 · 0 评论 -
高性能、高并发TCP服务器(多线程调用libevent)
本文讲述的TCP服务器是模仿memcache中的TCP网络处理框架,其中是基于libevent网络库的。主线程只处理监听客户端的连接请求,并将请求平均分配给子线程。子线程处理与客户端的连接以及相关业务。每个子线程有一个“连接”队列。每个“连接”有一个“反馈”队列。 先上个流程图,要上班了,以后再解释。代码以后再上··· 实现代码地址:转载 2016-08-03 22:00:39 · 3098 阅读 · 0 评论 -
windows下pthread线程库的使用
一直以来,由于标准C++中没有纳入线程库,对于多线程的编程感到束手无策,win32的线程机制感觉用着不便。今天想搜索一下有没有其他线程库,想到了Unix下随处可见的pthread线程库,但是苦于这个库是针对unix系统设计的,无法拿到VS中使用。Google了一下,竟然有win32版的pthread,心中大快。赶紧下来使用了一下,当真可行,故分享之。下载建议大家下载:转载 2016-09-09 23:35:21 · 3511 阅读 · 0 评论 -
关于pthread_cond_wait使用while循环判断的理解
转载自: https://www.cnblogs.com/leijiangtao/p/4028338.html在Stevens的《Unix 环境高级编程》中第11章线程关于pthread_cond_wait的介绍中有一个生产者-消费者的例子P311,在进入pthread_cond_wait前使用while进行条件判断,而没有直接使用if,耐人费解!代码如下:#include <...转载 2019-01-11 15:00:07 · 647 阅读 · 0 评论