﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-努力，一定可以成长起来-随笔分类-学习</title><link>http://www.cppblog.com/xulina/category/5479.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 24 May 2008 15:51:01 GMT</lastBuildDate><pubDate>Sat, 24 May 2008 15:51:01 GMT</pubDate><ttl>60</ttl><item><title>About pthread</title><link>http://www.cppblog.com/xulina/archive/2007/10/31/35607.html</link><dc:creator>努力的猪</dc:creator><author>努力的猪</author><pubDate>Wed, 31 Oct 2007 07:21:00 GMT</pubDate><guid>http://www.cppblog.com/xulina/archive/2007/10/31/35607.html</guid><wfw:comment>http://www.cppblog.com/xulina/comments/35607.html</wfw:comment><comments>http://www.cppblog.com/xulina/archive/2007/10/31/35607.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/xulina/comments/commentRss/35607.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xulina/services/trackbacks/35607.html</trackback:ping><description><![CDATA[<span style="FONT-SIZE: 12pt">看到很多程序都用了线程的概念，不知如何用，查了一下，还是不知所以然，先把大概的用法总结一下吧，慢慢理解&nbsp;<br><br>1. 包含头文件&nbsp; #include &nbsp; &lt;thread.h&gt;&nbsp;&nbsp; <br><br>2. 编译时加编译选项-lpthread<br>如：<br></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gcc -o program_name xxx.c -lpthread<br><br>给个例子先：<br><br>#include &lt;pthread.h&gt;<br><br>pthread_key_t key;<br><br>void echomsg(int t)<br>{<br>&nbsp;&nbsp;&nbsp;printf("线程退出.\n");<br>&nbsp;&nbsp;&nbsp;printf("destructor executed in thread %d, param=%d\n",pthread_self(),t);<br>}<br>void *child(void *arg)&nbsp;&nbsp;&nbsp; //<span style="FONT-SIZE: 10pt">为每一个现成单独建一个执行函数<br></span>{<br>&nbsp;&nbsp;&nbsp;return NULL;<br>&nbsp;}<br><br>int main()<br>{<br>&nbsp;&nbsp;&nbsp;int tid1;&nbsp;&nbsp; //<span style="FONT-SIZE: 10pt">线程号</span><br>&nbsp;&nbsp;&nbsp;printf("hello\n");<br>&nbsp;&nbsp;&nbsp;pthread_key_create(&amp;key,echomsg);&nbsp;&nbsp; //<span style="FONT-SIZE: 10pt">注意在创建线程前创建私有数据，线程退出时会将key作为参数送入echomsg<br></span>&nbsp;&nbsp;&nbsp;pthread_create(&amp;tid1,NULL,child,NULL);&nbsp;&nbsp; //<span style="FONT-SIZE: 10pt">创建线程，其中第一个NULL是设置线程属性，第二个NULL是child1函数的输入参数，线程的作用就是执行child1<br></span>&nbsp;&nbsp; sleep(10);<br>&nbsp;&nbsp;&nbsp;pthread_key_delete(key);&nbsp;&nbsp; //<span style="FONT-SIZE: 10pt">释放TSD</span><br>&nbsp;&nbsp;&nbsp;printf("main thread exit\n");<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;<span style="FONT-SIZE: 12pt">retrun 0;<br></span>}<br><br>
 <img src ="http://www.cppblog.com/xulina/aggbug/35607.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xulina/" target="_blank">努力的猪</a> 2007-10-31 15:21 <a href="http://www.cppblog.com/xulina/archive/2007/10/31/35607.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>