本帖最后由 linux_c_py_php 于 2012-09-20 22:54 编辑
... 你吹毛求疵了, 我不懂你欺负我就是了 -#-
我给楼主这个题目的一个可行方案是, 快慢根本不是需要考虑的问题, 如果这也算慢, 那么Mysql可以洗洗睡了:
1, 文件lseek到4 + 4 * 20 - 1 = 84 - 1 = 83B的偏移量, write 1 byte将文件扩充到84字节, 可以容纳记录当前元素个数的int, 以及40个int的存储空间.
2, mmap将84字节映射到内存, 进行初始化操作, 比如将计数设置为0, 40个槽位设置为-1.(进程共享访问需要做shared mutex以及使用S_IXOTH初始化锁编程技巧, 不懂你可以追问)
3, 查询:计数0, 直接返回, 非0, 遍历40个槽位即可.
4, 插入:遍历找一个空槽位, 计数+1.
5, 删除:遍历找到数值, 设置-1, 计数-1.
onlyxuyang 发表于 2012-09-20 22:45 ![]()
回复 10# linux_c_py_php
system call是真的很慢啊,要走vfs的flow,每次新建文件的话还要建新的dentry,i ... |