<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>中文 &#187; jiangtongcn</title>
	<atom:link href="http://software.intel.com/zh-cn/blogs/author/jiangtongcn/feed/" rel="self" type="application/rss+xml" />
	<link>http://software.intel.com/zh-cn/blogs</link>
	<description></description>
	<lastBuildDate>Sat, 26 May 2012 06:34:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>多线程编程 Demo [关键代码段[临界区]实现线程同步]</title>
		<link>http://software.intel.com/zh-cn/blogs/2011/06/30/demo/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2011/06/30/demo/#comments</comments>
		<pubDate>Thu, 30 Jun 2011 02:41:53 +0000</pubDate>
		<dc:creator>jiangtongcn</dc:creator>
				<category><![CDATA[博客征文专栏]]></category>
		<category><![CDATA[并行计算]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2011/06/30/demo/</guid>
		<description><![CDATA[  view plaincopy to clipboardprint? #include #include DWORD WINAPI Fun1Proc(LPVOID lParam); DWORD WINAPI Fun2Proc(LPVOID lParam); int balance = 110;//账户余额[最少10元保底] CRITICAL_SECTION critical;//代码临界区 /* 运用关键代码端[临界区]实现线程间同步 */ void main() { InitializeCriticalSection(&#38;critical); HANDLE hThread1 = CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);//线程1存钱[每次存100元,账户最多110元] HANDLE hThread2 = CreateThread(NULL,0,Fun2Proc,NULL,0,NULL);//线程2取钱[每次取100元,账户至少留10元] CloseHandle(hThread1); CloseHandle(hThread2); Sleep(5000); DeleteCriticalSection(&#38;critical); } DWORD WINAPI Fun1Proc(LPVOID lParam) { int i = 50; while (i-- &#62; 0) { [...]]]></description>
			<content:encoded><![CDATA[<p> </p>
<p>view plaincopy to clipboardprint?<br />
#include<br />
#include</p>
<p>DWORD WINAPI Fun1Proc(LPVOID lParam);<br />
DWORD WINAPI Fun2Proc(LPVOID lParam);</p>
<p>int balance = 110;//账户余额[最少10元保底]<br />
CRITICAL_SECTION critical;//代码临界区</p>
<p>/* 运用关键代码端[临界区]实现线程间同步 */<br />
void main()<br />
{<br />
InitializeCriticalSection(&amp;critical);<br />
HANDLE hThread1 = CreateThread(NULL,0,Fun1Proc,NULL,0,NULL);//线程1存钱[每次存100元,账户最多110元]<br />
HANDLE hThread2 = CreateThread(NULL,0,Fun2Proc,NULL,0,NULL);//线程2取钱[每次取100元,账户至少留10元]<br />
CloseHandle(hThread1);<br />
CloseHandle(hThread2);</p>
<p>Sleep(5000);<br />
DeleteCriticalSection(&amp;critical);<br />
}</p>
<p>DWORD WINAPI Fun1Proc(LPVOID lParam)<br />
{<br />
int i = 50;<br />
while (i-- &gt; 0)<br />
{<br />
EnterCriticalSection(&amp;critical);<br />
if (balance 0)<br />
{<br />
EnterCriticalSection(&amp;critical);<br />
if (balance-100&lt;10)<br />
{<br />
printf("线程2:\t账户余额:%d元,余额不足,线程2不能取款,等待线程1存款...\n",balance);<br />
LeaveCriticalSection(&amp;critical);<br />
continue;<br />
}<br />
printf("线程2:\t账户余额%d元,线程2取款100元\n",balance);<br />
balance-=100;<br />
LeaveCriticalSection(&amp;critical);<br />
}<br />
return 0;<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2011/06/30/demo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

