全球旧事资料 分类
行的函数的指针arg是新线程函数携带的参数。Pthread_create执行成功会返回0并在thread中保存线程标识符。执行失败则返回一个非0的出错代码。
fpthread_exit系统调用语法i
cludepthreadhvoidpthread_exitvoidretvalpthread_exit函数使用函数pthread_clea
up_push调用任何用于该线程的清除处理函数然后中止当前进程的执行返回retval。Retval可以由父线程或其他线程通过pthread_joi
来检索。一个线程也可以简单地通过从其初始化函数返回来终止。pthread_joi
系统调用语法i
cludepthreadhi
tpthread_joi
pthread_tthvoidthread_retur
i
tpthread_detachpthread_tth函数pthread_joi
用于挂起当前线程直到th指定的线程终止运行为止。另一个线程的返回值如果不为NULL则保存在thread_retur
指向的地址中。一个线程所使用的内存资源在对该线程应用pthread_joi
调用之前不会被重新分配。因而对于每个可切入的线程默认的必须调用一次pthread_joi
函数。线程必须是可切入的而不是被分离的状态并且其他线程不能对同一线程再应用pthread_joi
调用。通过在pthread_create调用创建一个线程时使用PTHREAD_CREATE_DETACHED属性或者使用pthread_detach可以让线程处于被分离状态。注意不像由fork创建的进程可以使用众多wait等待子进程退出在pthread多线程中似乎没有等待某个线程退出的方法。
f3)管道通信机制管道pipe是进程间通信最基本的一种机制。在内存中建立的管道称为无名管道在磁盘上建立的管道称为有名管道。无名管道随着进程的撤消而消失有名管道则可以长久保存shell命令符建立的就是无名管道而shell命令mkfifo建立的是有名管道。两个进程可以通过管道一个在管道一端向管道发送其输出给另一进程可以在管道的另一端从管道得到其输入管道以半双工方式工作即它的数据流是单方向的因此使用一个管道一般的规则是读管道数据的进程关闭管道写入端而写管道进程关闭其读出端。管道既可以采用同步方式工作也可以采用异步方式工作。pipe系统调用的语法为i
cludeu
istdhi
tpipei
tpipe_id2pipe建立一个无名管道pipe_id0中和pipe_id1将放入管道两端的描述符如果pipe执行成功返回0。出错返回1管道读写的系统调用语法为i
cludeu
istdhssize_treadi
tpipe_idco
stvoidbufsize_tcou
tssize_twritei
tpipe_idco
stvoidbufsize_tcou
tread和write分别在管道的两端进行读和写。pipe_id是pipe系统调用返回的管道描述符。Buf是数据缓冲区首地址cou
t说明数据缓冲区以size_t为单位的长度。
fread和write的返回值为它们实际读写的数据单位。注意管道的读写默认的通信方式为同步读写方r
好听全球资料 返回顶部