多核程序5_427.ppt.ppt

多核程序5_427.ppt

pthread_create() 执行成功时返回零,而失败时则返回非零值. * math1@first:~$ gcc -o threadcon threadcon.c –lpthread 例5.5 使用等待时间限制的条件变量的例子threadcontime.c 5.4.3 线程的撤销 一个线程可以通过向另个线程发送“请求”来结束另一个线程的执行。 POSIX pthreads库中关于撤销操作的函数有: int pthread_setcancelstate(int state, int *oldstate); int pthread_setcanceltype(int type, int *oldtype); void pthread_testcancel(void); 在撤销线程的时候,可以编写程序让线程进一步进行所谓的“清理”工作,比如已经拥有了某个 mutex,在清理例程中可以释放这个 mutex;如果动态分配了内存,那么可以在清理例程中释放动态分配的内存。 POSIX 信号量 POSIX 信号量在多线程编程中可以起到同步或互斥的作用。用POSIX 信号量可以实现传统操作系统P、V操作。 由于POSIX信号量不是内核负责维护,所以当进程退出后,POSIX信号量自动消亡。 #include semaphore.h int sem_init(sem_t *sem, int pshared, unsigned int value); int sem_wait(sem_t * sem); int sem_trywait(sem_t * sem); int sem_post(sem_t * sem); int sem_getvalue(sem_t * sem, int * sval); int sem_destroy(sem_t * sem); 线程和信号处理 #include signal.h int pthread_sigmask(int how, const sigset_t *newmask, sigset_t *oldmask); 用来改变或者设置线程的信号屏蔽(signal mask),newmask 用来执行新的信号屏蔽,设置新信号屏蔽以前的信号屏蔽被存放到 oldmask 指向的位置。 int pthread_kill(pthread_t thread, int signo); 可以向其他线程发送信号。 int sigwait(const sigset_t *set, int *sig); 挂起调用sigwait() 的线程,直到收到第一个参数 set 指向的信号集中指定的信号,且等待到信号被存放到第二个参数 sig 指向的位置。 5.5 使用GDB调试线程以及线程的调优 单步执行 n 5.6 使用Pthreads库的综合例子 http 多线程下载文件 * * * 3. 更改 cw: 更改光标处的字到此单字的字尾处。 c#w: 例如,c3w表示更改3个字。 cc: 修改行。 C: 替换到行尾。 4. 取代 r: 取代光标处的字符。 R: 取代字符直到按ESC为止。 5. 复制 yw: 拷贝光标处的字到字尾至缓冲区。 P: 把缓冲区的资料贴上来。 yy: 拷贝光标所在之行至缓冲区。 #yy: 例如,5yy,拷贝光标所在之处以下5行至缓冲区。 6. 复原 u: 复原至上一操作。 g: 列出行号,及相关信息。 7. 列出行号 :set nu (nu为行数) 8. 寻找字符串 /word由首至尾寻找“word”字符串,按n可往下继续找。 ?word由尾至首寻找“word”字符串,按N可往前继续找。 9. 跳行 :100可跳至第100行。 10. 重复上一个命令 .重复上一个命令。 使用vi查找和替换 vi提供了几种定位查找一个指定的字符串在文件中位置的方法。同时还提供一种功能强大的全局替换功能。 1. 查找一个字符串 一个字符串是一行上的一个或几个字符。 为查找一个字符串,在vi命令模式下键入“/”,后面跟要查找的字符串,再按回车。vi将光标定位在该串下一次出现的地方上。键入n跳到该串的下一个出现处,键入N跳到该串的上一个出现处。 为了在文件中回头查找,使用?代替/。在此情况下,键入n跳到该串的上一个出现处,键入N跳到该串的下一个出现处。 如果vi找到要求的串,光标会停留在该串第一次出现的地方。如果没有找到该串,vi会在屏幕的最后一行显示pattern not found。 查找通常是区分大小写的,如果希望vi在查找过程中忽略大小写,则键入:set ic。要使其变回默认状态,则键入:set noic。 某些特

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档