编写一个程序,创建两个线程 “thread1”和“thread2”,统计在一分钟thread1和thread2调用的次数
1个回答
展开全部
采用CreateThread()创建多线程程序
在window环境下,Win32 提供了一系列的API函数来完成线程的创建、挂起、恢复、终结以及通信等工作:
1、主要的函数列表:
序号
函数名
功能
1
CreateThread()
创建一个新线程
2
ExitThread()
正常结束一个线程的执行
3
TerminateThead()
强制终止一个线程的执行
4
ResumeThread()
重启一个线程
5
SuspendThread()
挂起一个线程
6
GetExiCodeThread()
得到一个线程的退出码
7
GetThreadPriority()
得到一个线程的优先级
8
SetThreadPriority()
设置一个线程的优先级
9
CloseHandle()
关闭一个线程的句柄
10
CreateRemoteThread()
再另一个进程中创建一个新线程
11
PostThreadMessage()
发送一条消息给指定的线程
12
GetCurrentThread()
得到当前的线程句柄
13
GetCurrentThreadId()
得到当前线程的ID
14
GetThreadId()
得到指定线程的ID
15
WaitForSingleObject()
等待单个对象
16
WaitForMultipleObjects()
等待多个对象
关于多线程的API函数还有很多,以上只是列出了一些比较常用的函数,欲知更多函数和函数的使用方法,请参考MSDN或网络资源,在此就不再介绍了。
2、线程函数的定义:
线程函数的规范格式定义为
DWORD WINAPI ThreadProc (LPVOID lpParam);//格式不正确将无法调用成功。函数名称没有限制,只要符合命名规则就可以。
但我常常看到有下列的线程函数定义:
void ThreadProc ();//该格式也是可以的,但使用的时候要这样通过
LPTHREAD_START_ROUTINE转换,如:
(LPTHREAD_START_ROUTINE)ThreadProc
我建议还是使用规范的格式比较好,不推荐使用void ThreadProc ()格式。不信就请看看MSDN的说明吧:
Do not declare this callback function with a void return typeand cast the function pointer to LPTHREAD_START_ROUTINE when creatingthe thread. Code that does this is common, but it can crash on 64-bit Windows.
而且线程函数必须是全局函数,不能在类中声明和定义。
3、多线程实例1:
我在此将写一个简单的多线程程序,用以展示多线程的功能和使用方法。该程序的主要的思想是画3个进度条,分别以多线程和单线程方式完成,大家可以比较一下。
说明:
(1)该程序还将和单线程做对比。
(2)由于给线程的函数传递了多个参数,所以采用结构体的方式传递参数。
(3)为了演示效果,采用了比较耗时的打点处理。
在window环境下,Win32 提供了一系列的API函数来完成线程的创建、挂起、恢复、终结以及通信等工作:
1、主要的函数列表:
序号
函数名
功能
1
CreateThread()
创建一个新线程
2
ExitThread()
正常结束一个线程的执行
3
TerminateThead()
强制终止一个线程的执行
4
ResumeThread()
重启一个线程
5
SuspendThread()
挂起一个线程
6
GetExiCodeThread()
得到一个线程的退出码
7
GetThreadPriority()
得到一个线程的优先级
8
SetThreadPriority()
设置一个线程的优先级
9
CloseHandle()
关闭一个线程的句柄
10
CreateRemoteThread()
再另一个进程中创建一个新线程
11
PostThreadMessage()
发送一条消息给指定的线程
12
GetCurrentThread()
得到当前的线程句柄
13
GetCurrentThreadId()
得到当前线程的ID
14
GetThreadId()
得到指定线程的ID
15
WaitForSingleObject()
等待单个对象
16
WaitForMultipleObjects()
等待多个对象
关于多线程的API函数还有很多,以上只是列出了一些比较常用的函数,欲知更多函数和函数的使用方法,请参考MSDN或网络资源,在此就不再介绍了。
2、线程函数的定义:
线程函数的规范格式定义为
DWORD WINAPI ThreadProc (LPVOID lpParam);//格式不正确将无法调用成功。函数名称没有限制,只要符合命名规则就可以。
但我常常看到有下列的线程函数定义:
void ThreadProc ();//该格式也是可以的,但使用的时候要这样通过
LPTHREAD_START_ROUTINE转换,如:
(LPTHREAD_START_ROUTINE)ThreadProc
我建议还是使用规范的格式比较好,不推荐使用void ThreadProc ()格式。不信就请看看MSDN的说明吧:
Do not declare this callback function with a void return typeand cast the function pointer to LPTHREAD_START_ROUTINE when creatingthe thread. Code that does this is common, but it can crash on 64-bit Windows.
而且线程函数必须是全局函数,不能在类中声明和定义。
3、多线程实例1:
我在此将写一个简单的多线程程序,用以展示多线程的功能和使用方法。该程序的主要的思想是画3个进度条,分别以多线程和单线程方式完成,大家可以比较一下。
说明:
(1)该程序还将和单线程做对比。
(2)由于给线程的函数传递了多个参数,所以采用结构体的方式传递参数。
(3)为了演示效果,采用了比较耗时的打点处理。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询