`
文章列表
redis的hashtable------dict.c 先了解基本的struct typedef struct dictEntry { void *key; union { void *val; uint64_t u64; int64_t s64; } v; struct dictEntry *next; } dictEntry; typedef struct dictType { unsigned int (*hashFunction)(const void *key); ...
在阅读redis源码/src/endianconv.c时遇到了一些不理解的语句 #include <stdint.h> /* Toggle the 16 bit unsigned integer pointed by *p from little endian to * big endian */ void memrev16(void *p) { unsigned char *x = p, t; t = x[0]; x[0] = x[1]; x[1] = t; } /* Toggle the 32 bit unsi ...
在编程之前先了解一下sctp套接字选项   setsockopt(设置socket状态)   相关函数 getsockopt 表头文件 #include<sys/types.h>#include<sys/socket.h> 定义函数 int setsockopt(int s,int level,int optname,const void * optval,,socklen_toptlen); 函数说明 setsockopt()用来设置参数s所指定的socket状态。参数level代表欲设置 ...
sendto(经socket传送数据) 相关函数 send , sendmsg,recv , recvfrom , socket 表头文件 #include < sys/types.h >#include < sys/socket.h > 定义函数 int sendto ( int s , const void * msg, int len, unsigned int flags, const struct sockaddr * to , int tolen ) ; 函数说明 sendto ...
select系统调用是用来让我们的程序监视多个文件句柄(file descriptor)的状态变化的。程序会停在select这里等待,直到被监视的文件句柄有某一个或多个发生了状态改变。     何为文件句柄????文件句柄在Linux里很多,如果你man某个函数,在函数返回值部分说到成功后有一个文件句柄被创建的都是,如man socket可以看到“On success, a file descriptor for the new socket is returned.”而man 2 open可以看到“open() and creat() return the new file descri ...
socket(建立一个socket通信) 相关函数 accept,bind,connect,listen 表头文件 #include<sys/types.h>#include<sys/socket.h> 定义函数 int socket(int domain,int type,int protocol); 函数说明 socket()用来建立一个新的socket,也就是向系统注册,通知系统建立一通信端口。参数domain 指定使用何种的地址类型,完整的定义在/usr/include/bits/soc ...
  互斥锁属性 使用互斥锁(互斥)可以使线程按顺序执行。通常,互斥锁通过确保一次只有一个线程执行代码的临界段来同步多个线程。互斥锁还可以保护单线程代码。 要更改缺省的互斥锁属性,可以对属性对象进行声明和初始化。通常,互斥锁属性会设置在应用程序开头的某个位置,以便可以快速查找和轻松修改。表 4–1 列出了用来处理互斥锁属性的函数。 表 4–1 互斥锁属性例程 操作 相关函数说明 初始化互斥锁属性对象  pthread_mutexattr_init 语法
  一.线程属性        线程具有属性,用pthread_attr_t表示,在对该结构进行处理之前必须进行初始化,在使用后需要对其去除初始化。我们用pthread_attr_init函数对其初始化,用pthread_attr_destroy对其去除初始化。   名称::
1.互斥量 互斥变量用pthead_mutex_t数据类型来表示,在使用互斥变量之前,必须首先对它进行初始化,可以把它置为常量PTHREAD_MUTEX_INITIALIZER(只对静态分配的互斥量),也可以能过调用pthread_mutex_init函数进行初始化。如果动态地分配互斥量(例如通过调用malloc)函数,那么释放内存前需要使用pthread_mutex_destroy. int pthread_mutex_init(pthread_mutex_t *restrict mutex,const pthread_mutexarrt_t * restrict arrt); ...
进程原语 线程原语 描述 fork pthread_create 创建新的控制流 exit pthread_exit 从现有的控制流中退出 waitpid pthread_join 从控制流中得到退出状态 atexit pthread_cancel_push 注册在退出控制流时调用的函数 getpid pthread_self 获取控制流的ID abort pthread_cancel 请深圳市控制流的非正常退出 pthread_create int pthread_create(pthread_t *t ...
shmgetint shmget(key_t key, size_t size, int flag);key: 标识符的规则size:共享存储段的字节数flag:读写的权限返回值:成功返回共享存储的id,失败返回-1key_t key-----------------------------------------------    key标识共享内存的键值: 0/IPC_PRIVATE。 当ke ...
  ftok() #include <sys/types.h> #include <sys/ipc.h> 函数原型:  key_t  ftok( const  char * pathname , int   proj_id  ); 参数:   pathname 就时你指定的文件名(该文件必须是存在而且可以访问的
我们运行如下命令,可看到Linux支持的信号列表: $ kill -l1) SIGHUP        2) SIGINT        3) SIGQUIT       4) SIGILL 5) SIGTRAP       6) SIGABRT       7) SIGBUS        8) SIGFPE 9) SIGKILL      10) SIGUSR1      11) SIGSEGV    ...
  sigaction(查询或设置信号处理方式) 相关函数 signal,sigprocmask,sigpending,sigsuspend 表头文件 #include<signal.h> 定义函数 int sigaction(int signum,const struct sigaction *act ,struct sigaction *oldact); 函数说明 ...
MyISAM在某些条件下允许并发插入下读取,并且它让你可以“高度”某些操作,以尽可能少地阻止工作。 MyISAM如何删除和插入行?? 删除操作不会重新安排整个表,它们只是把行标记为已经删除,并且在表中留下了一些“洞”。MyISAM在可能的情况下会优先使用这些“洞”,为插入复用空间。如果表是完整的,它就会把新的行拼接在表的最后。 即使MyISAM有表级别的锁,它也能在读取的同时把行拼接到表尾。它通过禁止读取最后一行做到了这一点。这避免了不连续的读取。 但是,当表中间的数据改变的时候,要提供连续读取就困难得多。MVCC是最通用的解决这个问题的方法,它在创建新版本数据的同时提供老版 ...
Global site tag (gtag.js) - Google Analytics