摘要: 信号灯用来实现同步——用于多线程,多进程之间同步共享资源(临界资源)。信号灯分两种,一种是有名信号灯,一种是基于内存的信号灯。有名信号灯,是根据外部名字标识,通常指代文件系统中的某个文件。而基于内存的信号灯,它主要是把信号灯放入内存的,基于内存的信号灯,同步多线程时,可以放到该多线程所属进程空间里;如果是同步多进程,那就需要把信号灯放入到共享内存中(方便多个进程访问)。 有名信号灯和基于内存的信号灯,具体区别体现在创建和销毁两个函数。有名信号灯使用sem_open和sem_close函数。基于内存的信号灯使用sem_init和sem_destroy函数。sem_init的参数可以控制是同... 阅读全文
posted @ 2012-04-18 16:32 PoleStar 阅读(1137) 评论(0) 推荐(0)
摘要: Posix消息队列的属性使用如下结构存放:struct mq_attr { long mq_flags; /*阻塞标志位,0为非阻塞(O_NONBLOCK)*/ long mq_maxmsg; /*队列所允许的最大消息条数*/ long mq_msgsize; /*每条消息的最大字节数*/ long mq_curmsgs; /*队列当前的消息条数*/ }; 队列可以在创建时由mq_open()函数的第四个参数指定mq_maxmsg,mq_msgsize。 如创建时没有指定则使用默认值,一旦创建,则不可再改变。队列可以在创建后由mq_setattr()函数设置... 阅读全文
posted @ 2012-04-16 09:29 PoleStar 阅读(1320) 评论(0) 推荐(0)
摘要: 创建消息队列的程序: 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <mqueue.h> //头文件 4 #include <sys/types.h> 5 #include <sys/stat.h> 6 #include <unistd.h> 7 #include <fcntl.h> 8 #include <errno.h> 9 10 #define MQ_NAME ("/tmp") 11 #define MQ_FLA 阅读全文
posted @ 2012-04-16 09:24 PoleStar 阅读(966) 评论(0) 推荐(0)
摘要: 消息队列可以认为是一个链表。进程(线程)可以往里写消息,也可以从里面取出消息。一个进程可以往某个消息队列里写消息,然后终止,另一个进程随时可以从消息队列里取走这些消息。这里也说明了,消息队列具有随内核的持续性,也就是系统不重启,消息队列永久存在。创建(并打开)、关闭、删除一个消息队列 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <mqueue.h> //头文件 4 #include <sys/types.h> 5 #include <sys/stat.h> 6 #incl 阅读全文
posted @ 2012-04-16 09:13 PoleStar 阅读(1256) 评论(0) 推荐(0)
摘要: 在Linux中执行.sh脚本,异常/bin/sh^M: bad interpreter: No such file or directory。 分析:这是不同系统编码格式引起的:在windows系统中编辑的.sh文件可能有不可见字符,所以在Linux系统下执行会报以上异常信息。 解决:1)在windows下转换:利用一些编辑器如UltraEdit或EditPlus等工具先将脚本编码转换,再放到Linux中执行。转换方式如下(UltraEdit):File-->Conversions-->DOS->UNIX即可。2)也可在Linux中转换: 首先要确保文件有可执行权限 #sh& 阅读全文
posted @ 2012-04-11 17:15 PoleStar 阅读(178) 评论(0) 推荐(0)
摘要: 互斥锁机制(Mutual exclusion,缩写为Mutex)是一种用于多线程编程中,防止两条线程同时对同一公共资源(比如全局变量)进行读写的机制。该目的通过将代码切片成一个一个的临界区域(critical section)达成。临界区域指的是一块对公共资源进行存取的代码,并非一种机制或是算法初始化:在Linux下, 线程的互斥量数据类型是pthread_mutex_t. 在使用前, 要对它进行初始化:对于静态分配的互斥量, 可以把它设置为PTHREAD_MUTEX_INITIALIZER, 或者调用pthread_mutex_init.对于动态分配的互斥量, 在申请内存(malloc)之后 阅读全文
posted @ 2012-04-07 18:08 PoleStar 阅读(861) 评论(0) 推荐(1)
摘要: 共享文件:UNIX系统支持在不同进程间共享打开的文件。在介绍dup()函数前,先介绍共享文件。1.每个进程在进程表中都有一个记录项,每个记录项中有一张打开文件描述符表,可将视为一个矢量,每个描述符占用一项。与每个文件描述符相关联的是: (a) 文件描述符标志。 (b) 指向一个文件表项的指针。2.内核为所有打开文件维持一张文件表。每个文件表项包含: (a) 文件状态标志(读、写、增写、同步、非阻塞等)。 (b) 当前文件位移量。 (c) 指向该文件v节点表项的指针。3.每个打开文件(或设备)都有一个 v节点结构。v节点包含了文件类型和对此文件进行各种操作的函数的指针信息。对... 阅读全文
posted @ 2012-03-29 15:31 PoleStar 阅读(504) 评论(0) 推荐(0)
摘要: 为了简化数据库大表的管理.ORACLE8以后推出了分区选项.分区可将表分离在不同的表空间上,用分而治之的方法来支撑元限膨胀的大表.将大表分割成较小的分区可以改善表的维护、备份、恢复、事务及查询性能。分区的优点:1、 增强可用性:如果表的一个分区由于系统故障而不能使用,表的其余好的分区仍可以使用;... 阅读全文
posted @ 2012-03-20 10:39 PoleStar 阅读(3300) 评论(0) 推荐(0)
摘要: Oracle在逻辑上以表空间存储数据,而实际上是以数据文件存储数据。表空间和数据文件 表空间:某一时刻只属于一个数据库;由一个或多个数据文件组成;可近一步划分逻辑存储单元 数据文件:只能属于一个表空间和一个数据库表空间类型 system表空间: – 随数据库创建 – 包含数据字典 – 包含 SYSTEM 还原段 非SYSTEM表空间: – 用于分开存储段 – 易于空间管理 – 控制分配给用户的空间量创建表空间 创建表空间的命令:create tablespace CREATE TABLESPACE tablespace [DATAFILE clause] [MINIM... 阅读全文
posted @ 2012-03-20 10:28 PoleStar 阅读(857) 评论(0) 推荐(0)
摘要: 启动我们的客户/服务器程序对,然后kill掉服务器子进程。看看客户端发生了什么?服务器端查看结果:zhaoxj$ netstat -antdp(并非所有进程都能被检测到,所有非本用户的进程信息将不会显示,如果想看到所有信息,则必须切换到 root 用户)激活Internet连接 (服务器和已建立连接的)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program nametcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN - tc... 阅读全文
posted @ 2012-03-19 10:14 PoleStar 阅读(540) 评论(0) 推荐(0)