- 博客(9)
- 收藏
- 关注
原创 Linux 互斥锁、原子操作实现原理
在Linux下,信号量和线程互斥锁的实现都是通过futex系统调用。futex(快速用户区互斥的简称)是一个在Linux上实现锁定和构建高级抽象锁如信号量和POSIX互斥的基本工具。它们第一次出现在内核开发的2.5.7版;其语义在2.5.40固定下来,然后在2.6.x系列稳定版内核中出现。Futex 是fast userspace mutex的缩写,意思是快速用户空间互斥体。Lin
2016-08-24 22:13:37 10067
原创 fork与vfork的区别
1.fork函数介绍#include sys/types.h>#include unistd.h>pid_t fork (void );正确返回:父进程中返回子进程的进程号;子进程中返回0;(单调用双返回函数)错误返回:-1;子进程是父进程的一个拷贝。具体说,子进程从父进程那得到了数据段和堆栈段,但不是与父进程共享而是单独分配内存。fork函数返回后,子进程和父进程都是从f
2016-08-24 21:37:32 1480
原创 TIME_WAIT状态与解决方法
执行主动关闭的那端经历了这个状态,并停留MSL(最长分节生命期)的2倍,即2MSL。TIME_WAIT存在的两个理由:1 可靠的实现TCP全双工连接的终止2 允许老的重复的分节在网络上的消逝第一个:如果客户端不维持TIME_WAIT状态,那么将响应给服务端一个RST,该分节被服务器解释成一个错误。如果TCP打算执行所有必要的工作以彻底终止某个连接上两个方向的数据流,那么必须正确的处
2016-08-21 16:24:25 11832
原创 C/C++语言字符串操作总结大全(超详细)
字符串操作strcpy(p, p1) 复制字符串strncpy(p, p1, n) 复制指定长度字符串strcat(p, p1) 附加字符串strncat(p, p1, n) 附加指定长度字符串strlen(p) 取字符串长度strcmp(p, p1) 比较字符串strcasecmp忽略大小写比较字符串strncmp(p, p1, n) 比较指定长度字符
2016-08-13 11:32:24 852
原创 vector<bool>效率问题的原因和替代方法
今天在刷一道题目的时候遇到这样一个效率问题,c数组效率 > vector效率 > vector效率,查找资料发现:vector不是容器,至少,不是标准意义上的容器。vector的名称有点让人误解,因为其内部元素实际上并不是标准的bool值,标准的bool值至少与char拥有一样的大小,从而可以被“正常”使用。然而C++标准对于vector值有其特殊的实现方法。目的是为了减小空间
2016-08-10 15:52:45 1526
原创 MPI非阻塞通信使用、性能分析与实现原理
非阻塞通信:异步通信通常是使MPI应用程序实现高性能计算的关键,使用异步通信具有如下优势:1)函数是非阻塞的,这使得进程在与另一个进程通信的同时继续参与计算;2)如果应用适当,可以绕过MPI的内部buffers,极大地提高程序的通信带宽;最常见的基本的非阻塞调用就是MPI_Isend和MPI_IrecvMPI_Isend的使用与同步版本的MPI_Send不同,MPI
2016-08-03 16:40:16 8106
原创 mmap与直接IO(read、write)的效率比较
不能简单的说哪个效率高,要看具体实现与具体应用。无论是通过mmap方式或read/write方式访问文件在内核中都必须经过两个缓存:一个是用address_space来组织的以页为基础的缓存;一个是以buffer来组织的缓存,但实际上这两个缓存只是同一个缓冲池里内容的不同组织方式。当需要从文件读写内容时,都经过 address_space_operation中提供的函数也就是说路径是一致的。如
2016-08-03 16:03:51 11278
转载 vim命令大全
进入vi的命令vi filename :打开或新建文件,并将光标置于第一行首vi +n filename :打开文件,并将光标置于第n行首vi + filename :打开文件,并将光标置于最后一行首vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filena
2016-08-01 14:52:53 352
原创 linux brk、sbrk、mmap和munmap系统调用
sbrk/brk重新指定数据段的结束位置。sbrk(增量),增量可正可负,也可以是0,,都返回原来的数据段结束地址,失败返回-1,。brk(地址),返回0或者-1。头文件。sbrk(0)可以取得当前结束地址。没有使用的虚拟内存地址,操作系统就没有映射到物理内存,如果试图访问会差生段错误。指定新的结束位置后如果有整个内存页被空闲出来,这一页就立即被解除映射。#include #
2016-08-01 10:46:52 3121
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人