易截截图软件、单文件、免安装、纯绿色、仅160KB

linux多线程学习(二)—线程的创建和退出


在前面的文章中提及到,一个进程中的多个线程是共享同一段资源的,由于线程对资源的竞争引出了锁。其中mutex是一种简单的加锁方法,这个互斥锁只有两种状态,那就是上锁和解锁,可以把互斥锁看作是某种意义上的全局变量。在某一时刻,只能有一个线程取得这个互斥上的锁,拥有上锁状态的线程可以对共享资源进行操作,而其他线程在该线程未解锁之前,够会被挂起,直到上锁的线程解开锁。可以这么说,互斥锁使得共享资源按序的在各个线程上操作。
互斥锁的操作主要包括互斥锁初始化、上锁、判断上锁、解锁、摧毁互斥锁。其中互斥锁可以分为快速互斥锁、递归互斥锁这检错互斥锁。这三种锁的区别主要在于其他未占有互斥锁的线程在希望得到互斥锁时是否需要等待挂起。快速锁是指调用线程会阻塞直到线程锁得到解锁为止。递归锁能够成功地返回并且增加调用线程在互斥上的加锁次数,比如一个链表在进行插入的操作时,可以进行查找的操作。检错锁则为快速互斥锁的非阻塞版本,它会立即返回并返回一个错误的信息。
1、函数简义。
(1)pthread_mutex_init
头文件:                  <pthread.h>
函数原型:               int pthread_mutex_init (pthread_mutex_t* mutex,
                                                                         const pthread_mutexattr_t* mutexattr);
函数传入值:            mutex:互斥锁。
                              mutexattr:PTHREAD_MUTEX_INITIALIZER:创建快速互斥锁。 
     


相关文档:

Linux 的多线程编程的高效开发经验

2009 年 4 月 23 日
本文中我们针对 Linux 上多线程编程的主要特性总结出 5 条经验,用以改善 Linux 多线程编程的习惯和避免其中的开发陷阱。在本文中,我们穿插一些 Windows 的编程用例用以对比 Linux 特性,以加深读者印象。
背景
Linux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多线程 API 有一些细微 ......

Linux及FreeBSD系统下查看CPU信息的方法

一、Linux
查看cpu信息:
[junjie2@ljj ~]$ cat /proc/cpuinfo
二、Freebsd
dmesg 最简单的方法
freebsd# cat /var/run/dmesg.boot |grep CPU 可以查看 cpu信息
sysctl hw.model 看cpuid
sysctl machdep.tsc_freq 看cpu频率
# sysctl -a | egrep -i 'hw.machine|hw.model|hw.ncpu'
# dmesg | grep -i cpu ......

VirtualBox Windows 和Linux 共享文件

1.Windows 下打开virtualBox ,启动虚拟机。在虚拟机窗口上选择 设备 ->分配数据空间
2.选择Windows下你想要共享的文件夹 如H:share , 添加固定数据分配空间 ,分配各名字如:VMshare
3.在虚拟机linux终端挂起刚分配的数据空间,
   sudo monut -t vboxsf VMshare /home/plus/share #其中/home/plus/share是 ......

Tips: linux shell重定向

Linux POSIX Shell 环境中支持输入输出重定向,用符号"<"和">"来表示。命令形式可以用%>file或者%<content来表示(其中%表示文件描述符:0为标准输入stdin,1为标准输出stdout、2为标准错误stderr).系统默认%值是1,也就是1>,可以简写为>,也就是说默认为1>。stdout的默认输出到终端,stderr的默认输 ......

C++ 之Boost学习笔记 Linux下编程

C++学习笔记--Linux下编程
一、关于Boost的使用,几种常用方法,只是自己工作、学习中总结的,有些方法的确有些繁琐,能满足需求,应该还有更加简单快捷的方式,待改进。
1、判断字符串与正则表达式是否匹配(完全匹配)
bool IsMatch(const char* data,const char * regx)
{
    boost::regex express ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号