- 博客(15)
- 资源 (2)
- 收藏
- 关注
转载 linux下swap分区的作用
嵌入式Linux中文站消息,Linux系统的Swap分区,即交换区,Swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap
2016-03-27 17:15:03 21361 5
转载 系统缓冲区、内核缓冲区、IO库操作本身的缓冲区 之间联系
FILE结构里本身带有一个缓冲。而系统在操作IO的时候可能会还有一个缓冲。fflush函数单纯是调用系统地写操作(比如WriteFile)把FILE结构里的那个缓冲的数据传给系统,这个时候很可能仅仅是写到系统的缓冲区里了。fsync函数是调用系统的flush函数(FlushFileBuffers),清空系统的写入缓冲区。 C是独立于系统存在的,所以它只能假设系统本身没有
2016-03-26 13:31:36 1033
转载 内存映射文件原理
一直都对内存映射文件这个概念很模糊,不知道它和虚拟内存有什么区别,而且映射这个词也很让人迷茫,今天终于搞清楚了。。。下面,我先解释一下我对映射这个词的理解,再区分一下几个容易混淆的概念,之后,什么是内存映射就很明朗了。 原理首先,“映射”这个词,就和数学课上说的“一一映射”是一个意思,就是建立一种一一对应关系,在这里主要是只 硬盘上文件 的位置与进程 逻辑地址空间中 一块大
2016-03-26 11:51:43 12646 6
转载 高性能IO模型浅析
服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种:(1)同步阻塞IO(Blocking IO):即传统的IO模型。(2)同步非阻塞IO(Non-blocking IO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非Java的NIO(New IO)库。(3)IO多路复用(IO Multiplexi
2016-03-25 18:36:05 532
转载 浅析三层架构与MVC模式的区别
三层架构介绍:(点击链接即可见三层架构) MVC模式介绍:MVC全名是Model ViewController,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用于组织代码用一种业务逻辑和数据显示分离的方法,这个方法的假设前提是如果业务逻辑被聚集到一个部件里面,而且界面和用户围绕数据的交互能被改进和个性化定制而不
2016-03-15 19:57:28 431
转载 每天进步一点点——Linux中的线程局部存储(二)
转载:http://blog.csdn.net/cywosp/article/details/26876231 在Linux中还有一种更为高效的线程局部存储方法,就是使用关键字__thread来定义变量。__thread是GCC内置的线程局部存储设施(Thread-Local Storage),它的实现非常高效,与pthread_key_t向比较更为快速,其存
2016-03-07 17:53:44 395
原创 pthread_setspecific函数与pthread_getspecific函数
函数原型:int pthread_setspecific(pthread_key_t key, const void *value);功能:使用pthread_setspecific可以为指定线程特定数据键设置线程特定绑定头文件:#include 由于pthread库非linux默认库,所以需要手动链接 -lpthread形参: key:需要关联的键
2016-03-07 16:48:48 15000
原创 pthread_key_delete函数
函数原型:int pthread_key_delete(pthread_key_t key);功能:销毁线程特定数据键。由于键已无效,因此将释放与该键关联的所有内存。在调用该函数之前必须释放所有线程的特定资源,‘该函数不会调用任何析构函数。反复调用pthread_key_create与pthread_key_delete可能会产生问题。对于每个所需的键,应当只调用pthread_key
2016-03-07 16:33:11 2749
原创 pthread_key_create函数
函数原型: int pthread_key_create(pthread_key_t *key, void(*destructor)(void*));功能: 分配用于表示进程中线程特定数据的键,键对进程中的所有线程来说是全局的。创建线程特定数据时,所有线程最初都具有与该键关联的NULL值。POSIX要求系统至少支持128TSD头文件:#include pthread非linux
2016-03-07 16:21:28 4166
原创 浅谈数组与指针的区别
区别1:观察下面程序#include #include using namespace std;int main(){ int a[5] = {1, 2, 3, 4, 5}; printf("%p\n", a); printf("%p\n", &a);//吃惊a == &a printf("%p\n", &a + 1);//重点理解,由于&a是一个指针长度为5的数组的指针,故
2016-03-06 22:24:46 471
原创 浅谈C++变量(对象)初始化问题
随着C++的学习,发现C++中初始化问题比较复杂。故在此做一下总结:默认初始化:如果定义变量时没有指定初值,则变量被默认初始化,此时变量被赋予了“默认值”1、如果是内置类型的变量且未被显示初始化,它的值由位置决定。定义在任何函数体之外的变量被初始化为0.定义在函数体内部的内置类型变量将不被初始化(当然如果是static类型,则执行值初始化,内置类型的静态变量初始化为0);
2016-03-04 20:34:10 3288
原创 线程特定数据TSD及其实现原理
引言:单线程C程序有两类基本数据:局部数据和全局数据。对于多线程C程序,添加了第三类数据:线程特定数据那么为什么要引入线程特定数据呢?试想如果你的一个线程里面嵌套调用了很多函数,而你又想在这些函数之间使用一个公共的变量,如果在单线程C中,我们是不是就要声明一个全局变量了呢?是的。但是我们想使声明的这个全局变量只属于我们当前这个实例线程(同一个void *(*start_routin
2016-03-04 14:44:51 2900
原创 pthread_detach函数
函数原型:int pthread_detach(pthread_t tid);功能:pthread_join()函数的替代函数,可回收创建时detachstate属性设置为PTHREAD_CREATE_JOINABLE的线程的存储空间。该函数不会阻塞父线程。pthread_join()函数用于只是应用程序在线程tid终止时回收其存储空间。如果tid尚未终止,pthread_de
2016-03-04 10:25:19 13441
原创 pthread_join函数
函数原型:int pthread_join(pthread_t tid, void **status);功能:pthread_join()函数会一直阻塞调用线程(当前线程),直到指定的线程tid终止。当pthread_join()返回之后,应用程序可回收与已终止线程关联的任何数据存储空间(另外也可设置线程attr属性,当线程结束时直接回收资源)。如果没有必要等待特定的线程终止之后才进行
2016-03-03 21:13:14 18623
原创 pthread_create函数
函数原型:int pthread_create(pthread_t *tid, const pthread_attr_t *tattr, void*(*start_routine)(void *), void *arg);功能:创建一个新的线程,并将线程加入当前进程头文件:#include pthread非linux系统的默认库,需手动链接-线程库 -lpthread参数:ti
2016-03-02 22:42:40 5129
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人