摘要: 当控件的多个线程共享统一内存时,我们需要确定各个线程访问到的数据的一致性。在cpu结构中,修改操作由多个内存读写周期(memory cycle),而在这些内存周期之间, 有可能会发生其他线程的内存读操作,这样就会产生多线程之间的数据一致性问题。 互斥锁 mutex 我们可以通过线程互斥锁接口(pth 阅读全文
posted @ 2017-10-26 00:27 Sven7 阅读(388) 评论(0) 推荐(0) 编辑
摘要: 对传统的UNIX进程来讲,一个进程中只有一个线程,这就意味着一个进程在同一时刻只能做一件事(即使是多核CPU)。使用多线程技术, 我们可以设计程序使得一个进程在同一时刻做多件事。使用多线程编程具有以下优势: 一个线程由一个进程中那些能代表当前执行上下文的所必要的信息组成。它包括一个用于标志线程的线程 阅读全文
posted @ 2017-09-30 17:04 Sven7 阅读(297) 评论(0) 推荐(0) 编辑
摘要: 一个事件可以使一个信号发送给一个进程,这个事件可以是硬件异常,可以是软件条件触发,可以是终端产生信号,也可以是一个kill函数调用。当信号产生后,内核通常会在进程表中设置某种形式的标志(flag)。我们可以认为当进程中的信号处理函数被触发的时候认为信号下达到了(delivered)这个进程。从信号产 阅读全文
posted @ 2017-09-21 16:21 Sven7 阅读(516) 评论(1) 推荐(0) 编辑
摘要: 信号可以理解成一种软件中断。他提供了一种异步处理事件的方式。每个信号都有一个与之对应的信号名,这些信号名都带有SIG前缀,如:SIGABRT,SIGALARM。头文件signal.h 中定义了所有的信号名,他们值为正整数常量。事实上,实现将个别信号定义在不同的头文件中,只不过这些头文件又被包含在了s 阅读全文
posted @ 2017-08-30 14:54 Sven7 阅读(560) 评论(0) 推荐(1) 编辑
摘要: 进程组(process group) 进程组顾名思义是指一个或多个进程的集合。他们通常与同一个job(可以从同一个终端接收信号)相关联。每个进程组拥有一个唯一的Process Group Id。可以使用getpgrp或getpgid获取进程的Process Group Id: 每个进程组可以有一个进 阅读全文
posted @ 2017-08-28 10:46 Sven7 阅读(621) 评论(0) 推荐(0) 编辑
摘要: Unix 类操作系统支持不同进程间共享文件。对于所有的I/O,内核使用3种数据结构来表示一个打开的文件。 由上图可见,两个独立的进程中,他们的文件描述符是相对另一个进程独立的,他们中的不同或相同文件描述符可以指向同一个文件,但是他们拥有不同的文件表入口,并以此控制这个各自对此文件的读写偏移及文件状态 阅读全文
posted @ 2017-08-28 09:54 Sven7 阅读(263) 评论(0) 推荐(0) 编辑