Linux下thread编程(三)
作者:Sam(甄峰) sam_cdoe@hotmail.com
1.创建thread.
int pthread_create(pthread_t *restrict thread, const pthread_attr_t *restrict attr,
void *(*start_routine)(void*), void *restrict arg);
参数1:pthread_t *restrict thread:创建thread的thread ID.
参数2:const pthread_attr_t *restrict attr:创建线程的属性。
参数3:void *(*start_routine)(void*):thread服务程序。
参数4:void *restrict arg:thread服务程序参数。
2. 等待目标线程终止:
pthread_join() 函数会一直阻塞调用线程,直到指定的线程终止。
指定的线程必须位于当前的进程中,而且不得是分离线程。所有创建时属性为PTHREAD_CREATE_JOINABLE的非分离thread. 最终都需要调用pthread_join() or pthread_detach() 。这样thread所占资源和 Thread ID 才被释放。
3. 分离thread:
int pthread_detach(pthread_t thread);
pthread_detach()指出当thread 结束时,thread所占资源和Thread ID会被释放和再利用。如果调用pthread_detach()时,thread没有结束,它并不会导致thread退出。它只对PTHREAD_CREATE_JOINABLE 非分离thread有效。
4. 获取thread ID:
pthread_t pthread_self(void);
返回调用thread的thread ID.
5. 比较thread ID:
int pthread_equal(pthread_t t1, pthread_t t2);如果 tid1 和 tid2 相等,pthread_equal() 将返回非零值,否则将返回零。
6. 向thread发信号:
int pthread_kill(pthread_t thread, int sig);
tid 所指定的线程必须与调用线程在同一个进程中。sig 参数必须来自 signal(5) 提供的列表。
7. 退出线程:
void pthread_exit(void *value_ptr);
pthread_exit()用来终止调用thread并置位value_ptr.这个值会交给pthread_join。
Thread的取消:
同一进程内,某个Thread可以向其它thread发送取消要求,要求目标thread退出运行。
取消请求的处理方式取决于目标线程的状态。状态由以下两个函数确定:pthread_setcancelstate() 和 pthread_setcanceltype()。
pthread_setcancelstate() 启用或禁用线程取消功能。创建线程时,缺省情况下线程取消功能处于启用状态。
pthread_setcanceltype() 可以将取消类型设置为延迟或异步模式。创建线程时,缺省情况下会将取消类型设置为延迟模式。在延迟模式下,只能在取消点取消线程。在异
相关文档:
1. HCI层协议概述:
HCI提供一套统一的方法来访问Bluetooth底层。如图所示:
从图上可以看出,Host Controller Interface(HCI) 就是用来沟通Host和Module。Host通常就是PC, Module则是以各种物理连接形式(USB,serial,pc-card等)连接到PC上的bluetooth Dongle。
在Host这一端:application,SDP,L2cap等协议 ......
什么是 yum?
yum 是 yellowdog updater modified 的缩写。yellowdog 是一个 Linux 的 distribution,RH 将这种升级技术利用到自己的 distribution 形成了现在的 yum,感觉上 yum 和 apt 的原理类似,但是 apt 是编译代码,执行效率远高于使用 python 写成的 yum。这是 yum 的主页。
yum 的理念是使用一个中心仓 ......
linux下手动删除数据库实例,直接删除相应的目录就可以了,不多说了....
1. $ORACLE_HOME/dbs/
[oracle9@frogger dbs]$ pwd
/u01/app/oracle/product/9.2.0.1/dbs
[oracle9@frogger dbs]$ rm inittest02.ora
[oracle9@frogger dbs]$ rm orapwdtest02
2. $ORACLE_BASE/oradata/SID
[oracle9@frogger oradata]$ ......
用 GDB 调试程序
GDB 概述
————
GDB 是 GNU 开源组织发布的一个强大的 UNIX 下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像 VC 、 BCB 等 IDE 的调试,但如果你是在 UNIX 平台下做软件,你会发现 GDB 这个调试工具有比 VC 、 BCB 的图形化调试器更强大的功能。所谓 “ ......
在配置Apache James Mail Server 的时候,Linux 默认占用了25号端口,需要把它关掉才能运行James Mail Server。
nmap localhost : 查看占用的端口。
由于服务是由守护进程维护,所以 找到该服务的PID,然后kill掉就OK了。
netstat -anep | grep 25
tcp 0 & ......