<?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; zgjxwl</title>
	<atom:link href="http://software.intel.com/zh-cn/blogs/author/zgjxwl/feed/" rel="self" type="application/rss+xml" />
	<link>http://software.intel.com/zh-cn/blogs</link>
	<description></description>
	<lastBuildDate>Mon, 28 May 2012 14:23:20 +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>卖车票多线程示例 -- 互斥对象</title>
		<link>http://software.intel.com/zh-cn/blogs/2011/04/28/400007396/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2011/04/28/400007396/#comments</comments>
		<pubDate>Thu, 28 Apr 2011 14:17:08 +0000</pubDate>
		<dc:creator>zgjxwl</dc:creator>
				<category><![CDATA[博客征文专栏]]></category>
		<category><![CDATA[并行计算]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2011/04/28/400007396/</guid>
		<description><![CDATA[  //多线程卖车票 &#124; 互斥对象 #include #include int index=0; int tickets=100; HANDLE hMutex; DWORD WINAPI Thread1Proc(LPVOID lpParameter) { while(TRUE)//保证线程的不断执行 { WaitForSingleObject(hMutex,INFINITE);//获取互斥对象 if(tickets&#62;0) { Sleep(1); cout&#60;&#60;"thread1 sells ticket:"&#60;&#60;tickets--&#60;0) { Sleep(2); cout&#60;&#60;"thread2 sells ticket:"&#60;&#60;tickets--&#60;&#60;endl; } else break; ReleaseMutex(hMutex); } return 0; } void main() { HANDLE hThread1; HANDLE hThread2; /* 注意，创新互斥器放在创建线程之前 */ hMutex=CreateMutex(NULL,TRUE,NULL);//TRUE表示调用CreateMutex的线程(即主线程)拥有了互斥对象 hThread1=CreateThread(NULL,0,Thread1Proc,NULL,0,NULL); hThread2=CreateThread(NULL,0,Thread2Proc,NULL,0,NULL); CloseHandle(hThread1);//关闭句柄,此时系统会递减新线程的线程内核对象的使用计数,当创建的线程 CloseHandle(hThread2);//执行完毕后,系统也会递减线程内核对象的使用计数,计数为0时,系统释放线程内核对象 ReleaseMutex(hMutex);//主线程释放互斥对象的拥有权 [...]]]></description>
			<content:encoded><![CDATA[<p> </p>
<p>//多线程卖车票 | 互斥对象<br />
#include<br />
#include</p>
<p>int index=0;<br />
int tickets=100;<br />
HANDLE hMutex;</p>
<p>DWORD WINAPI Thread1Proc(LPVOID lpParameter)<br />
{<br />
while(TRUE)//保证线程的不断执行<br />
{<br />
WaitForSingleObject(hMutex,INFINITE);//获取互斥对象<br />
if(tickets&gt;0)<br />
{<br />
Sleep(1);<br />
cout&lt;&lt;"thread1 sells ticket:"&lt;&lt;tickets--&lt;0)<br />
{<br />
Sleep(2);<br />
cout&lt;&lt;"thread2 sells ticket:"&lt;&lt;tickets--&lt;&lt;endl;<br />
}<br />
else<br />
break;<br />
ReleaseMutex(hMutex);<br />
}<br />
return 0;<br />
}</p>
<p>void main()<br />
{<br />
HANDLE hThread1;<br />
HANDLE hThread2;<br />
/* 注意，创新互斥器放在创建线程之前 */<br />
hMutex=CreateMutex(NULL,TRUE,NULL);//TRUE表示调用CreateMutex的线程(即主线程)拥有了互斥对象</p>
<p>hThread1=CreateThread(NULL,0,Thread1Proc,NULL,0,NULL);<br />
hThread2=CreateThread(NULL,0,Thread2Proc,NULL,0,NULL);<br />
CloseHandle(hThread1);//关闭句柄,此时系统会递减新线程的线程内核对象的使用计数,当创建的线程<br />
CloseHandle(hThread2);//执行完毕后,系统也会递减线程内核对象的使用计数,计数为0时,系统释放线程内核对象</p>
<p>ReleaseMutex(hMutex);//主线程释放互斥对象的拥有权</p>
<p>Sleep(10000);//要保证在卖完100张票前，主线程不能退出<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2011/04/28/400007396/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

