摘要:
[toc] 一、进程的概念 ============== 什么是进程?进程这个概念是针对系统而不是针对程序员的,对程序员来说,我们面对的概念是程序,当输入指令执行一个程序的时候,对系统而言,它将启动一个进程。 进程就是正在内存中运行中的程序,Linux下一个进程在内存里有三部分的数据,就是“代码段 阅读全文
摘要:
[toc] 前面的章节介绍socket通信的时候,socket的服务端在同一时间只能和一个客户端通信,并不是服务端有多忙,而是因为单进程的程序在同一时间只能做一件事情,不可能一边等待客户端的新连接一边与其它的客户端进行通信。 一、并发的服务端 ================ 如果把socket服 阅读全文
摘要:
[toc] 进程的数据空间是独立的,私有的,不能相互访问,但是在某些情况下进程之间需要通信来实现某功能或交换数据,包括: 1)数据传输:一个进程需要将它的数据发送给另一个进程。 2)共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。 3)通知事件:一个进程需要向另 阅读全文
摘要:
[toc] 一、如何让程序在后台运行 ======================== 在之前的章节中,如果要运行程序,在命令提示行下输入程序名后回车,程序被执行,然后等待程序运行完成,在程序运行的过程中,也可以用Ctrl+c中止它。 在实际开发中,我们需要让程序在后台运行,没有界面,没有用户输入 阅读全文
摘要:
[toc] 一、共享内存的概念 ================== 共享内存(Shared Memory)就是允许多个进程访问同一个内存空间,是在多个进程之间共享和传递数据最高效的方式。操作系统将不同进程之间共享内存安排为同一段物理内存,进程可以将共享内存连接到它们自己的地址空间中,如果某个进程 阅读全文
摘要:
[toc] 一、信号量的概念 ================ 信号量(信号灯)本质上是一个计数器,用于协调多个进程(包括但不限于父子进程)对共享数据对象的读/写。它不以传送数据为目的,主要是用来保护共享资源(信号量、消息队列、socket连接等),保证共享资源在一个时刻只有一个进程独享。 信号量 阅读全文
摘要:
[toc] 一、线程的概念 ============== 和多进程相比,多线程是一种比较节省资源的多任务操作方式。启动一个新的进程必须分配给它独立的地址空间,每个进程都有自己的堆栈段和数据段,系统开销比较高,进行数据的传递只能通过进行间通信的方式进行。在同一个进程中,可以运行多个线程,运行于同一个 阅读全文
摘要:
[toc] 一、线程同步的概念 ================== 线程同步?怎么同步?一起运行?一起停止?我当年听说线程同步这个词的时候,也是一头雾水。 在人们的日常生活中的锁大概有两种:一种是不允许访问;另一种是资源忙,同一时间只允许一个使用者占用,其它使用者必须要等待。 1)不允许访问的锁 阅读全文
摘要:
[toc] 在C/C++程序中,经常需要调用其它的程序来先成某项任务,例如其它的C/C++程序、操作系统命令或Shell脚本,C/C++提供了exec函数族和system函数来实现这个功能。 一、exec函数族 ============== exec函数族提供了一个在进程中启动另一个程序执行的方法 阅读全文
摘要:
[toc] 一、源代码的组织 ================ 我们通常把公用的自定义函数和类从主程序中分离出来,函数和类的声明在头文件中,定义在程序文件中,主程序中要包含头文件,编译时要和程序文件一起编译。 示例(public.h) 示例(public.cpp) 示例(book265.cpp) 阅读全文