下面是一个多线程,生产者消费者问题,一个队列放暂存的数据: 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using std::cout; 8 using std::endl; 9 using std::queu...
分类:
编程语言 时间:
2014-07-30 00:44:12
阅读次数:
430
多线程编程
Linux线程概述
线程模型
线程是程序中完成一个独立任务的完整执行序列,即一个可调度的实体。根据运行环境和调度者的身份,线程可分为内核线程和用户线程。内核线程,在有的系统上也称为LWP(Light Weigth Process,轻量级进程),运行在内核空间,由内核来调度;用户线程运行在用户空间,由线程库来调度。当进程的一个内核线程获得CPU的使用权时,它就加载并...
分类:
编程语言 时间:
2014-07-08 19:45:08
阅读次数:
219
如果每个线程使用的变量都是其它线程不会读取或修改的,那么就不存在一致性问题。同样,如果变量是只读的,多个线程同时读取该变量也不会有一致性问题。否则,将会出现不一致性问题。为了解决数据不一致问题,必须引入某些机制使线程间同步。
当变量修改时间多于一个存储器访问周期,同时读、写操作又相互交替时,潜在的不一致性就会出现。如下图所示:
此时,线程B读取到的数据是错误的。使用一...
分类:
编程语言 时间:
2014-06-15 16:28:24
阅读次数:
254
既然我们已经明白为什么线程会有用以及如何使用它们,不如让我们用更近一步的眼光来审查一下上面的想法。进程模型基于两种独立的概念:资源分组处理与执行。有时,将这两种概念分开会更有益,这也引入了“线程”这一概念。我们将先来看经典的线程模型;之后我们会来研究“模糊进程与线程分界线”的Linux线程模型。理解...
分类:
编程语言 时间:
2014-05-23 10:21:03
阅读次数:
346
在程序中时间处理往往是一个麻烦的事,Linux系统提供了很多关于时间处理的函数,我们可以用这些函数来完成我们所需要的功能。本文详细讲解在C/C++开发过程中常用的时间处理函数。...
分类:
系统相关 时间:
2014-05-15 09:06:56
阅读次数:
574
当进程中的某一个线程调用了exit、_Exit、_exit,那么整个进程会终止。同样,一个信号发送到某个线程,而该信号的默认动作是终止,整个进程也会终止。
单个进程的终止有三种方法:
从程序正常返回。线程自身调用pthread_exit。被同一进程中的其它线程取消。
先来看看前两种情况。
void pthread_exit(void *rval_ptr); // 退...
分类:
编程语言 时间:
2014-05-14 15:13:07
阅读次数:
428
看到很多程序都是根据CPU个数来创建线程个数,当时很不理解他们之间的关系,咨询了项目组的同事后才有了大致了解。1.相关系统函数下面的函数可以通过man命令查询到。SYNOPSIS
#define_GNU_SOURCE
#include<pthread.h>
intpthread_setaffinity_np(pthread_tthread,size_tc..
分类:
编程语言 时间:
2014-05-13 04:08:00
阅读次数:
450