
多线程/多进程编程
风吹过的时光
别问我是谁,我只是个过客。
展开
-
Linux 下的多进程编程
(一) 理解linux下进程的结构 Linux下一个进程在内存里有三部份的数据,就是“数据段”,“堆栈段”和“代码段”,其实学过汇编语言的人一定知道,一般的CPU象I386,都有上述三种段寄存器,以方便操作系统的运行。“代码段”,顾名思义,就是存放了程序代码的数据,假如机器中有数个进程运行相同的一个程序,那么它们就可以使用同一个代码段。 堆栈段存放的就是子程序的返回地址、子程转载 2013-07-22 21:18:17 · 901 阅读 · 0 评论 -
领导者/追随者(Leader/Follower)
领导者/追随者(Leader/Follower)1.问题多线程是实现并发处理多事件的应用程序的一种常用技术。然而,很难实现高性能的多线程服务器应用程序。这些应用程序通常处理大量同时到达的多类型事件。为了有效地处理这种问题,有三个强制条件必须解决:1)服务请求可以来自为每个已连接的客户机分配的多事件源(如多TCP/IP套接字句柄)。因此,一个关键设计强制条件是在线程和事件源间确定有效的多转载 2014-05-05 06:06:45 · 9252 阅读 · 0 评论 -
线程基类的实现(二)(本文重头戏在子类)
//我感觉到自己对C++的理解越来越深了,呵呵,废话不多说,好好学习,天天向上。#include using namespace std;#include #include class ThreadBaseClass{private: pthread_t t;public: virtual void run() = 0原创 2012-05-11 18:48:46 · 1213 阅读 · 2 评论 -
简单实现带有数据缓冲池的生产者消费者模型
//先把那个数据池实现了再说。//more UserData.h#ifndef USER_DATA_H#define USER_DATA_H#include #include #include using namespace std;class UserData //定义一个数据缓冲池,这样就可以限定这个缓冲池的大小,轻松实现生产者消费者模型,使之更原创 2012-05-18 10:20:24 · 1206 阅读 · 0 评论 -
linux下修改进程打开文件数限制
使用ulimit -a查看相关消息。 1,linux 默认的进程打开文件上限是1024个,可以通过ulimit -n查看。很多系统上限可以通过修改/etc/security/limits.conf文件改变,这个文件有详细的注释,对如何修改做了说明。如果希望 把所有用户的进程打开文件上限改为65536,可以加入下面两行 * soft nofile 8192 * har转载 2013-08-02 15:16:22 · 10262 阅读 · 0 评论 -
线程基类的实现(一)
#include using namespace std;#include #include //实现一个线程基类,使得只要继承该基类的子类实现run函数,通过多态则可轻易实现线程创建。//2012-5-11class ThreadBaseClass{private: pthread_t t;public: virtu原创 2012-05-11 18:34:51 · 1791 阅读 · 0 评论 -
线程属性pthread_attr_t简介
本文编辑整理自: http://hi.baidu.com/7828058/blog/item/256e16decd1a385e94ee3784.htmlhttp://www.ibm.com/developerworks/cn/linux/thread/posix_threadapi/part1/ Posix线程中的线程属性pthread_attr_t主要包括scope属性、de转载 2013-07-10 09:20:22 · 1258 阅读 · 0 评论 -
简单实现一种经典的数据传输模型
//内容描述:服务器通过socket接收数据,他不停地监听是否有客户端来与其进行连接,如果有,就建立一个线程来处理客户端发过来的数据,如果客户端发送数据结束或者由于某种原因服务器端接收数据失败,则服务器终止接收。//在这里简单地实现一下,如果在工作当中要用到这种传输模型,则要比这个要考虑的严谨的多。如更健全的数据封装,异常处理,数据池,发送失败处理,接收失败处理,数据保存,甚至是还要加上生产者原创 2012-05-17 14:19:58 · 1210 阅读 · 0 评论 -
linux c编程获得当前进程的进程名和执行路径
如何得到当前进程的进程名和执行路径。写了个程序分享一下。[sam@hzhsan test]$ more test_processname.cpp #include #include #include #include size_t get_executable_path( char* processdir,char* processname, size_t len)原创 2013-07-10 19:12:10 · 14073 阅读 · 0 评论 -
linux proc进程信息详解
/proc//maps 查看进程的虚拟地址空间是如何使用的。 该文件有6列,分别为: 地址:库在进程里地址范围 权限:虚拟内存的权限,r=读,w=写,x=,s=共享,p=私有; 偏移量:库在进程里地址范围 设备:映像文件的主设备号和次设备号; 节点:映像文件的节点号; 路径: 映像文件的路径 每项都与一个vm_area_struct结构成员对应, 范例:转载 2013-07-23 17:09:55 · 7982 阅读 · 0 评论 -
linux下进程的最大线程数、进程最大数、进程打开的文件数
linux 系统中单个进程的最大线程数有其最大的限制 PTHREAD_THREADS_MAX这个限制可以在 /usr/include/bits/local_lim.h 中查看对 linuxthreads 这个值一般是 1024,对于 nptl 则没有硬性的限制,仅仅受限于系统的资源这个系统的资源主要就是线程的 stack 所占用的内存,用 ulimit -s 可以查看默认的转载 2013-08-02 11:59:38 · 1400 阅读 · 0 评论 -
Linux下ps命令详解
linux上进程有5种状态: 1. 运行(正在运行或在运行队列中等待) 2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生) 4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放) 5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIG转载 2012-07-06 10:56:49 · 925 阅读 · 0 评论 -
gdb 多线程调试
gdb 多线程调试http://hi.baidu.com/hcq11/blog/item/9f5bfc6e696209d680cb4a25.html http://hi.baidu.com/litto/blog/item/759389dd198111375882dd1e.html http://blogold.chinaunix.net/u3/94700/showart_23894转载 2013-05-17 11:28:39 · 950 阅读 · 0 评论 -
linux中使用pthread_kill函数测试线程是否存活
pthread_kill:别被名字吓到,pthread_kill可不是kill,而是向线程发送signal。还记得signal吗,大部分signal的默认动作是终止进程的运行,所以,我们才要用signal()去抓信号并加上处理函数。int pthread_kill(pthread_t thread, int sig);向指定ID的线程发送sig信号,如果线程代码内不做处理,则按照信号默转载 2013-07-10 10:17:00 · 1203 阅读 · 0 评论 -
Double Checked Locking 模式 -- 单例实现的多线程版本
之前在使用Double CheckLocking 模式时,发现自己还是不太理解。于是写个记录,其实很简单,一看就明白了。应用特别说明:1.Double Check Locking模式是singleton的多线程版本,如果是单线程则应使用singleton。2.Double Check Locking模式依就会使用锁——临界区锁定,不要以为可以避免使用锁。3.Double转载 2014-05-06 22:35:58 · 1434 阅读 · 0 评论