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

Linux下thread编程(二)

作者: Sam(甄峰) sam_code@hotmail.com
thread属性:
pthread_create()中,第二个参数(pthread_attr_t)为将要创建的thread属性。通常情况下配置为NULL,使用缺省设置就可以了。
但了解这些属性,有利于更好的理解thread.
属性对象(pthread_attr_t)是不透明的,而且不能通过赋值直接进行修改。系统提供了一组函数,用于初始化、配置和销毁每种对象类型。
创建属性:
int pthread_attr_init(pthread_attr_t *attr);
创建的属性设定为缺省设置。
销毁属性:
int pthread_attr_destroy(pthread_attr_t *attr);
一:设置分离状态:
线程的分离状态有2种:PTHREAD_CREATE_JOINABLE(非分离状态), PTHREAD_CREATE_DETACHED(分离状态)
分离状态含义如下:
如果使用 PTHREAD_CREATE_JOINABLE 创建非分离线程,则假设应用程序将等待线程完成。也就是说,程序将对线程执行 pthread_join。 非分离线程在终止后,必须要有一个线程用 join 来等待它。否则,不会释放该线程的资源以供新线程使用,而这通常会导致内存泄漏。因此,如果不希望线程被等待,请将该线程作为分离线程来创建。
如果使用 PTHREAD_CREATE_DETACHED 创建分离thread,则表明此thread在退出时会自动回收资源和thread ID.
Sam之前很喜欢使用分离thread. 但现在慢慢使用中觉得这样是个不好的习惯。因为分离thread有个问题:主程序退出时,很难确认子thread已经退出。只好使用全局变量来标明子thread已经正常退出了。
另外:不管创建分离还是非分离的thread.在子thread全部退出之前退出主程序都是很有风险的。如果主thread 选择return,或者调用exit()退出,则所有thread都会被kill掉。这样很容易出错。Sam上次出的问题其实就是这个。但如果主thread只是调用pthread_exit().则仅主线程本身终止。进程及进程内的其他线程将继续存在。所有线程都已终止时,进程也将终止。
int pthread_attr_getdetachstate(const pthread_attr_t *attr,int *detachstate);
int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate);
得到当前和分离状态和设置当前的分离状态。
二:设置栈溢出保护区大小:
栈溢出概念:
溢出保护可能会导致系统资源浪费。如果应用程序创建大量线程,并且已知这些线程永远不会溢出其栈,则可以关闭溢出保护区。通过关闭溢出保护区,可以节省系统资源。
线程在栈上分配大型数据结构时,可能需要较大的溢出保护区来检测栈溢出。
int pthre


相关文档:

实战Linux Bluetooth编程(三) HCI层编程

1. HCI层协议概述:
HCI提供一套统一的方法来访问Bluetooth底层。如图所示:
从图上可以看出,Host Controller Interface(HCI)  就是用来沟通Host和Module。Host通常就是PC, Module则是以各种物理连接形式(USB,serial,pc-card等)连接到PC上的bluetooth Dongle。
在Host这一端:application,SDP,L2cap等协议 ......

Linux忘记了root的密码的解决办法

1. 系统启动后,在出现grub画面时,用上下键选中你平时启动linux的那一项,然后按e键
2. 再次用上下键选中你平时启动linux的那一项(类似于kernel/boot mlinuz-2.4.18-14 ro root=LABEL=/),然后按e键
3. 修改你现在见到的命令行,加入single,结果如下:
    kernel /boot mlinuz-2.4.18-14 single ro ......

一个linux下g++使用的 makefile 模板

 refer:http://www.cnblogs.com/diylab/archive/2008/04/24/1169771.html
这个makefile可用于编译大多数的c++工程。
你可以根据需要修改下面的参数:
VPATH: 源文件的文件路径。多个文件夹路径用空格分隔
OBJ: 编译目标所需要的.o文件
当然,你也可以不改动此文件,而直接在 make 命令的参数中指定
如:
make ......

Linux下c程序开发笔记

 第一章
1.
解释性语言:shell  javascript python  编程人员不需要经过编译 连接的过程,可以在特定环境下直接执行的语言  自动编译连接。开发效率高,但运行效率低。
编译型语言:java c c++,需要经过编程人员经过编译和连接产生可执行程序的语言。运行效率高。
2.
数据
数据结构:数据之间的 ......

联想在又走回Linux的老路?

 
尽管不愿意过分声张,但联想确实在重回Linux的老路。11月12日,高通CEO Paul Jacobs透露了联想一款基于ARM架构
Snapdragon处理器的智能本产品,这种产品的定位介于智能手机与上网本之间。Jacobs还宣称这款基于Linux的智能本将于明年1月份召开的
CES计算机电子展会上正式露面,而联想随后也对这则消息进行了确认, ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号