文章分类 -  UNIX编程

C++中编写线程基础类,使用线程函数的方法
摘要:把成员函数作为线程函数,this指针会作为默认的参数被传进函数中,从而和线程函数参数(void*)不能匹配,不能通过编译。怎么解决呢?网上有一个解决办法,引用过来,自己记着。摘自:http://hi.chinaunix.net/?uid-11770217-action-viewspace-itemi... 阅读全文

posted @ 2015-08-30 16:02 菜鸟基地 阅读(2778) 评论(0) 推荐(1)

用户级线程和内核级线程区别
摘要:1.内核级线程:切换由内核控制,当线程进行切换的时候,由用户态转化为内核态。切换完毕要从内核态返回用户态;可以很好的利用smp,即利用多核cpu。windows线程就是这样的。2. 用户级线程内核的切换由用户态程序自己控制内核切换,不需要内核干涉,少了进出内核态的消耗,但不能很好的利用多核Cpu,目... 阅读全文

posted @ 2015-08-27 10:59 菜鸟基地 阅读(155) 评论(0) 推荐(0)

在多线程环境中使用fork
摘要:在多线程下使用fork可能会造成死锁,一般fork以后,会完全复制调用fork的线程的所有内存,锁状态等。如果某个锁在其他线程中被锁,然后fork后的子进程将会拥有已经被锁的的变量,但是自己称并没有复制那个暂用锁的线程信息。所以可能导致死锁 阅读全文

posted @ 2015-08-19 15:08 菜鸟基地 阅读(180) 评论(0) 推荐(0)

线程中的信号处理
摘要:在多线程中,所有的信号屏蔽字的处理都是共享的,每一个线程对信号屏蔽字的处理,会影响其他线程对这个屏蔽字的处理。多线程中使用pthread_sigmask()函数设置信号屏蔽字。其中sigwait(sigset_t* set,int* signo)可以阻塞线程,使用此函数前,需要阻塞信号集中的信号,函... 阅读全文

posted @ 2015-08-18 16:28 菜鸟基地 阅读(495) 评论(0) 推荐(0)

线程的三种同步方式
摘要:1 互斥量数据结构:ptread_mutex_t mutex;方法:pthread_mutex_init(&mutex,NULL); pthread_mutex_destroy(&mutex); pthread_mutex_lock(&mutex);//正确返回0,错误返回其他值 ... 阅读全文

posted @ 2015-08-18 14:34 菜鸟基地 阅读(203) 评论(0) 推荐(0)

线程的资源回收
摘要:创建线程时可以使线程处于两种状态,可分离状态,以及不可分离状态。不同的状态关乎线程结束时线程的资源回收问题。虽然同一个进程的多个线程共享进程的栈空间,但是每个线程都是在这个栈中拥有自己私有的栈空间的。所以线程结束时需要回收为了在使用 pthread 时避免线程的资源在线程结束时不能得到正确释放,从而... 阅读全文

posted @ 2015-08-08 10:06 菜鸟基地 阅读(3960) 评论(0) 推荐(0)

sigsuspend函数作用
摘要:sigsuspend函数:sigsuspend函数接受一个信号集指针,将信号屏蔽字设置为信号集中的值,在进程接受到一个信号之前,进程会挂起,当捕捉一个信号,首先执行信号处理程序,然后从sigsuspend返回,最后将信号屏蔽字恢复为调用sigsuspend之前的值。主要是为了替换sigprocmas... 阅读全文

posted @ 2015-08-05 13:58 菜鸟基地 阅读(144) 评论(0) 推荐(0)

可重入函数以及函数的线程安全性以及二者相关
摘要:1)可重入函数 主要针对系统出现中断时,程序进入信号处理程序。那么函数同时在主程序和中断处理中是否能同时出现。比如如果进程进行malloc在堆中分配空间,而此时由于进程由于中断,进入信号处理程序也要调用mallocc,这时可能会更改malloc维护的链表。还有就是同时修改一个静态存储单元比如同时... 阅读全文

posted @ 2015-08-05 09:16 菜鸟基地 阅读(253) 评论(0) 推荐(0)

关于父进程和子进程关系,以及fork()进程数量
摘要:父进程和子进程关系:子进程拥有父进程几乎所有资源的拷贝,重新复制存储空间,包括标准输入,输出的缓冲空间以及程序。当程序中出现fork后,子进程将从fork语句开始复制程序代码,并且在子进程中执行。关于fork()执行后,在子进程中返回值为0,在父进程中返回值为整数即子进程的ID。1)循环fork()... 阅读全文

posted @ 2015-08-01 13:34 菜鸟基地 阅读(1028) 评论(0) 推荐(0)

关于sprintf(snprintf)和sscanf的用法
摘要:2、sprintf函数 sprintf函数原型为int sprintf(char *str, const char *format, ...)。作用是格式化字符串,具体功能如下所示:(1)将数字变量转换为字符串。(2)得到整型变量的16进制和8进制字符串。(3)连接多个字符串。(4)1 c... 阅读全文

posted @ 2015-07-31 13:25 菜鸟基地 阅读(759) 评论(0) 推荐(0)

文件所有者ID(st_uid和st_gid),进程的有效ID(有效用户ID和有效组ID)以及附加组ID,设置用户ID
摘要:其中文件所有者ID为文件的性质,而后面两个有效ID和附加组ID则是进程的性质,进程每次打开,删除,创建一个文件时,都要惊醒文件访问权限测试:1)如果进程的有效用户ID是0(超级用户,比如根用户),则允许访问,给予超级用户整个文件系统进行处理的权限2)如进程有效用户ID等于文件所有者ID,那么按照进程... 阅读全文

posted @ 2015-07-29 15:13 菜鸟基地 阅读(1049) 评论(0) 推荐(0)

进程对文件共享
摘要:内核使用三种数据结构表示打开的文件,他们之间的关系决定了在文件共享方面,一个进程对另一个进程的影响1)每个进程有自己单独的一个记录项,记录项中又一张打开文件描述符表,每个描述符占用一个项。与每个描述符相关联的是一个文件描述符标志,一个指向文件表项的指针2)内核为所有打开文件维持一张文件表,其中内容包... 阅读全文

posted @ 2015-07-29 10:28 菜鸟基地 阅读(181) 评论(0) 推荐(0)

不带缓冲的I/O函数与标准I/O函数区别
摘要:系统调用:只操作系统提供给用户程序调用的一组接口-------获得内核提供的服务。不带缓存的I/O:read,write,open......标准(带缓存的)I/O:fgets,fread,fwrite.....这里使用两个对应的函数进行比较:ssize_t write(int filedes, c... 阅读全文

posted @ 2015-07-28 15:03 菜鸟基地 阅读(302) 评论(0) 推荐(0)

导航