<?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; khil_wang</title>
	<atom:link href="http://software.intel.com/zh-cn/blogs/author/khil_wang/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>WIN API 多线程编程</title>
		<link>http://software.intel.com/zh-cn/blogs/2011/06/30/win-api/</link>
		<comments>http://software.intel.com/zh-cn/blogs/2011/06/30/win-api/#comments</comments>
		<pubDate>Thu, 30 Jun 2011 02:44:25 +0000</pubDate>
		<dc:creator>khil_wang</dc:creator>
				<category><![CDATA[博客征文专栏]]></category>
		<category><![CDATA[并行计算]]></category>

		<guid isPermaLink="false">http://software.intel.com/zh-cn/blogs/2011/06/30/win-api/</guid>
		<description><![CDATA[  1: // 线程实现2.cpp : 定义控制台应用程序的入口点。 2: // 3: 4: #include "stdafx.h" 5: #include 6: #include 7: using namespace std; 8: 9: DWORD WINAPI Fun1Proc(LPVOID lpParameter);//thread data 10: DWORD WINAPI Fun2Proc(LPVOID lpParameter);//thread data 11: 12: int index=0; 13: int tickets=10; 14: HANDLE hMutex; 15: 16: int _tmain(int argc, _TCHAR* argv[]) 17: { 18: HANDLE hThread1; [...]]]></description>
			<content:encoded><![CDATA[<p> </p>
<p>1: // 线程实现2.cpp : 定义控制台应用程序的入口点。<br />
2: //<br />
3:<br />
4: #include "stdafx.h"<br />
5: #include<br />
6: #include<br />
7: using namespace std;<br />
8:<br />
9: DWORD WINAPI Fun1Proc(LPVOID lpParameter);//thread data<br />
10: DWORD WINAPI Fun2Proc(LPVOID lpParameter);//thread data<br />
11:<br />
12: int index=0;<br />
13: int tickets=10;<br />
14: HANDLE hMutex;<br />
15:<br />
16: int _tmain(int argc, _TCHAR* argv[])<br />
17: {<br />
18: HANDLE hThread1;<br />
19: HANDLE hThread2;<br />
20: //创建线程<br />
21:<br />
22:<br />
23: /*<br />
24: HANDLE CreateThread(<br />
25: LPSECURITY_ATTRIBUTES lpThreadAttributes, // pointer to security attributes<br />
26: DWORD dwStackSize, // initial thread stack size<br />
27: LPTHREAD_START_ROUTINE lpStartAddress, // pointer to thread function<br />
28: LPVOID lpParameter, // argument for new thread<br />
29: DWORD dwCreationFlags, // creation flags<br />
30: LPDWORD lpThreadId // pointer to receive thread ID<br />
31: );<br />
32: 第一个参数是指向SECURITY_ATTRIBUTES型态的结构的指针。在Windows 98中忽略该参数。在Windows NT中，它被设为NULL<br />
33: 第二个参数是用于新线程的初始堆栈大小，默认值为0, 表示1MB。在任何情况下，Windows根据需要动态延长堆栈的大小。<br />
34: 第三个参数是指向线程函数的指标。函数名称没有限制，但是必须以下列形式声明：DWORD WINAPI ThreadProc (PVOID pParam) ; 返回值为DWORD，调用约定是WINAPI<br />
35: 调用约定：<br />
36: 除了c pascal stdcall之外，什么时候又来一个WINAPI调用约定(calling conversion)呢？哦WINAPI在WINDEF.h中被定义为：#define WINAPI __stdcall<br />
37: 第四个参数为传递给ThreadProc的参数。这样主线程和从属线程就可以共享数据。<br />
38: 第五个参数通常为0，但当建立的线程不马上执行时为旗标CREATE_SUSPENDED。线程将暂停直到呼叫ResumeThread来恢复线程的执行为止。默认情况是立即执行<br />
39: 第六个参数：新线程ID会被传回这里<br />
40: */<br />
41:<br />
42: hThread1=CreateThread(<br />
43: NULL, //1<br />
44: 0, //2<br />
45: Fun1Proc, //3<br />
46: NULL, //4<br />
47: 0, //5<br />
48: NULL); //6<br />
49: hThread2=CreateThread(<br />
50: NULL,<br />
51: 0,<br />
52: Fun2Proc,<br />
53: NULL,<br />
54: 0,<br />
55: NULL);<br />
56: CloseHandle(hThread1);<br />
57: CloseHandle(hThread2);<br />
58:<br />
59: //创建互斥对象<br />
60: hMutex=CreateMutex(NULL,TRUE,_T("tickets"));<br />
61: if (hMutex)<br />
62: {<br />
63: if (ERROR_ALREADY_EXISTS==GetLastError())<br />
64: {<br />
65: cout&lt;&lt;"only one instance can run!"0)<br />
85: {<br />
86: Sleep(1);<br />
87: cout&lt;&lt;"thread1 sell ticket :"0)<br />
104: {<br />
105: Sleep(1);<br />
106: cout&lt;&lt;"thread2 sell ticket :"&lt;<br />
107: }<br />
108: else<br />
109: break;<br />
110: ReleaseMutex(hMutex);<br />
111: }<br />
112: return 0;<br />
113: }<br />
114:</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/zh-cn/blogs/2011/06/30/win-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

