﻿<?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++博客-leonzhang</title><link>http://www.cppblog.com/leonzhang/</link><description /><language>zh-cn</language><lastBuildDate>Thu, 09 Apr 2026 04:19:22 GMT</lastBuildDate><pubDate>Thu, 09 Apr 2026 04:19:22 GMT</pubDate><ttl>60</ttl><item><title>C/C++ on Liunx platform 第四篇 thread control </title><link>http://www.cppblog.com/leonzhang/archive/2012/05/08/174014.html</link><dc:creator>leon_zhang</dc:creator><author>leon_zhang</author><pubDate>Tue, 08 May 2012 14:23:00 GMT</pubDate><guid>http://www.cppblog.com/leonzhang/archive/2012/05/08/174014.html</guid><wfw:comment>http://www.cppblog.com/leonzhang/comments/174014.html</wfw:comment><comments>http://www.cppblog.com/leonzhang/archive/2012/05/08/174014.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/leonzhang/comments/commentRss/174014.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/leonzhang/services/trackbacks/174014.html</trackback:ping><description><![CDATA[<div><font style="background-color: #cce8cf">线程优点（对比进程）：<br />1.开销小<br />2.由于同在一个进程中，各线程之间很方便的访问共享数据。<br />线程典型应用：异步处理机制；处理blocking IO;<br />线程函数定义在&lt;pthread.h&gt;<br />线程对于共享数据的同步机制:<br />1.显式互斥锁mutex_t <br />...<br />避免频繁创建销毁线程的开销，可使用线程池复用线程，参考boost threadpool.<br /><br />&lt;to be continue...&gt;<br /></font></div><img src ="http://www.cppblog.com/leonzhang/aggbug/174014.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/leonzhang/" target="_blank">leon_zhang</a> 2012-05-08 22:23 <a href="http://www.cppblog.com/leonzhang/archive/2012/05/08/174014.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C/C++ on Liunx platform 第三篇 process control </title><link>http://www.cppblog.com/leonzhang/archive/2012/05/06/173837.html</link><dc:creator>leon_zhang</dc:creator><author>leon_zhang</author><pubDate>Sun, 06 May 2012 11:21:00 GMT</pubDate><guid>http://www.cppblog.com/leonzhang/archive/2012/05/06/173837.html</guid><wfw:comment>http://www.cppblog.com/leonzhang/comments/173837.html</wfw:comment><comments>http://www.cppblog.com/leonzhang/archive/2012/05/06/173837.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/leonzhang/comments/commentRss/173837.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/leonzhang/services/trackbacks/173837.html</trackback:ping><description><![CDATA[<div><font style="background-color: #cce8cf">趁着休息这两天，把基本的C linux API和标准库的内容发布下~~,作为一个记录，也提供给大家做参考，请多提comments。<br /><br />Create process API定义在unistd.h中。<br />函数原型：<br />pid_t fork(void);&nbsp;<br />对子进程返回0，对父进程返回子进程pid.<br />如果父进程不处理子进程的exit status, 子进程就成为 Z process。<br />避免Z process：<br />1. 使用 pid_t waitpid(pid_t,int*,int);来阻塞等待子进程退出。<br />2. 父进程使用singal进行异步处理，当子进程结束时，发送SIGCHLD signal 给父进程，父进程收到SIGCHLD后再调用waitpid()。<br />&nbsp;&nbsp;&nbsp; 关于信号的定义和操作见signal.h<br /><br />&lt;to be continue...&gt;<br /></font></div><img src ="http://www.cppblog.com/leonzhang/aggbug/173837.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/leonzhang/" target="_blank">leon_zhang</a> 2012-05-06 19:21 <a href="http://www.cppblog.com/leonzhang/archive/2012/05/06/173837.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C/C++ on Liunx platform 第二篇 I/O</title><link>http://www.cppblog.com/leonzhang/archive/2012/05/06/173813.html</link><dc:creator>leon_zhang</dc:creator><author>leon_zhang</author><pubDate>Sun, 06 May 2012 05:14:00 GMT</pubDate><guid>http://www.cppblog.com/leonzhang/archive/2012/05/06/173813.html</guid><wfw:comment>http://www.cppblog.com/leonzhang/comments/173813.html</wfw:comment><comments>http://www.cppblog.com/leonzhang/archive/2012/05/06/173813.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/leonzhang/comments/commentRss/173813.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/leonzhang/services/trackbacks/173813.html</trackback:ping><description><![CDATA[<div><font style="background-color: #cce8cf">UNIX API提供最基本的IO函数，声明在fcntl.h unistd.h中。(fcntrl&lt;=&gt;fd control)<br />应用程序使用file descriper(文件描述符)和内核交互。<br />这些函数与标准库中的IO对比，称为unbuffered I/O.<br />UNIX中一切都是文件，磁盘上文件，socket都可以用FD来标识，也都可以使用这些函数操作I/O.<br />UNIX 常用IO模型(部分)：<br />1.blocking IO<br />2. Non-blocking IO<br />3. IO 复用<br />在打开文件时，默认I/O方式是blocking.<br />函数原型：<br />ssize_t read(int,void*,size_t); //-1 error , 0 EOF<br />ssize_t write(int,void*,size_t);<br /><font style="background-color: #cce8cf">read和write一般都放到一个循环里，出错或者EOF才break</font><br />在socket IO时候，如果是blocking mode,在读操作的时候，如果内核没有准备好数据，那么read函数就会阻塞，自然需要一个thread来处理。<br />IO复用技术可以使服务器不用为每一个客户端都分配2个thread.<br />&lt; to be continue...&gt;<br /><br /></font></div><img src ="http://www.cppblog.com/leonzhang/aggbug/173813.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/leonzhang/" target="_blank">leon_zhang</a> 2012-05-06 13:14 <a href="http://www.cppblog.com/leonzhang/archive/2012/05/06/173813.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C/C++ on Liunx platform 第一篇 基本概念和必要知识</title><link>http://www.cppblog.com/leonzhang/archive/2012/05/05/173780.html</link><dc:creator>leon_zhang</dc:creator><author>leon_zhang</author><pubDate>Sat, 05 May 2012 13:34:00 GMT</pubDate><guid>http://www.cppblog.com/leonzhang/archive/2012/05/05/173780.html</guid><wfw:comment>http://www.cppblog.com/leonzhang/comments/173780.html</wfw:comment><comments>http://www.cppblog.com/leonzhang/archive/2012/05/05/173780.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/leonzhang/comments/commentRss/173780.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/leonzhang/services/trackbacks/173780.html</trackback:ping><description><![CDATA[<div><font style="background-color: #cce8cf">Linux内核：其作用是管理计算机硬件；以C函数形式提供API。<br />C语言标准库：在API之上构建的一层应用程序库，封装了一些低级的API，为上层应用提供更高效的C函数；例如malloc,printf。标准库中的一些函数不使用API，仅是提供在用户态的一些算法，例如strcpy。<br />开发工具de生命力：C/C++，从计算机开天辟地发展到今天，一直都没有过时。就好象UNIX一样，极具生命力。<br /><br />&lt;to be continue ...&gt;<br /><br /></font></div><img src ="http://www.cppblog.com/leonzhang/aggbug/173780.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/leonzhang/" target="_blank">leon_zhang</a> 2012-05-05 21:34 <a href="http://www.cppblog.com/leonzhang/archive/2012/05/05/173780.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>