﻿<?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/yubowaver/</link><description>色彩的图画</description><language>zh-cn</language><lastBuildDate>Tue, 09 Jun 2026 18:59:10 GMT</lastBuildDate><pubDate>Tue, 09 Jun 2026 18:59:10 GMT</pubDate><ttl>60</ttl><item><title>多线程编程1 线程同步</title><link>http://www.cppblog.com/yubowaver/archive/2011/02/28/140835.html</link><dc:creator>海上钢琴师</dc:creator><author>海上钢琴师</author><pubDate>Mon, 28 Feb 2011 09:37:00 GMT</pubDate><guid>http://www.cppblog.com/yubowaver/archive/2011/02/28/140835.html</guid><wfw:comment>http://www.cppblog.com/yubowaver/comments/140835.html</wfw:comment><comments>http://www.cppblog.com/yubowaver/archive/2011/02/28/140835.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yubowaver/comments/commentRss/140835.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yubowaver/services/trackbacks/140835.html</trackback:ping><description><![CDATA[&nbsp; 不得不承认，自从上一次做一个gps项目后，再也没有使用过多线程的知识，前几天被问到这方面的东西，竟然都想不起来，又查了些资料，加强下记忆，在此后的日子里我要建成我自己的一个封装程序库，希望也会有一个线程库。<br>&nbsp; 线程的同步方式：<br>&nbsp; 1.临界区&nbsp; CRITICAL_SECTION<br><br>&nbsp; 一个简单的例子：<br>&nbsp; CRITICAL_SECTION g_cs;//声明一个临界区<br>&nbsp;&nbsp;&nbsp;char&nbsp; g_Array[10];//共享资源<br><br>&nbsp;&nbsp; UINT threadFunc1(void* pParam)<br>&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//进入临界区<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EnterCriticalSection(&amp;g_cs);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int i=0;i&lt;10;++i)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//操作共享资源<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_Array[i] = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//离开临界区<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LeaveCriticalSection(&amp;g_cs);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp; UINT threadFunc2(void* pParam)<br>&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//进入临界区<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EnterCriticalSection(&amp;g_cs);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int i=0;i&lt;10;++i)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//操作共享资源<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_Array[i] =2;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//离开临界区<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LeaveCriticalSection(&amp;g_cs);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; main()<br>&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//初始化临界区<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InitializeCriticalSection(&amp;g_cs);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//启动线程<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AFXBeginThread(threadFunc1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AFXBeginThread(threadFunc2);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//等待计算<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sleep(100);<br>}<br><br><br>&nbsp;&nbsp;&nbsp;2.互斥体<br><br>
<img src ="http://www.cppblog.com/yubowaver/aggbug/140835.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yubowaver/" target="_blank">海上钢琴师</a> 2011-02-28 17:37 <a href="http://www.cppblog.com/yubowaver/archive/2011/02/28/140835.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>