C++学习笔记--线程简单应用
来源:互联网 发布:mac系统软件 编辑:程序博客网 时间:2024/04/29 21:55
对于线程,对于新手来说会觉得非常麻烦,实际上不是如此,其实很简单,只是要注意线程的关闭和开启。简单的方法创建线程达到效果。
第一种方式:----MFC封装好调用线程方式
对于线程,对于新手来说会觉得非常麻烦,实际上不是如此,其实很简单,只是要注意线程的关闭和开启。简单的方法创建线程达到效果。
#include "ComMonitorThread.h" // 引用线程
在按钮的程序中添加
m_pMainDlg = (CSignalLampSetToolDlg*)::AfxGetMainWnd();
::AfxBeginThread(ClientThread,this); //获得线程程序ClientThread() 设置此程序为线程程序,线程中一直执行此函数。
UINT CComMonitorThread::ClientThread(LPVOID lParam)// lParam 为线程句柄。
此函数在其调用进程的进程空间里创建一个线程。举例:
{
CComMonitorThread* pComm = (CComMonitorThread*)lParam; //CComMonitorThread 为线程所在对象。
pComm->OnStart();
return 0;
}
第二种方式---非MFC封装调用线程。
CreateThread
函数原型:
- HANDLE CreateThread(
- LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD
- DWORD dwStackSize, // initial stack size
- LPTHREAD_START_ROUTINE lpStartAddress, // thread function
- LPVOID lpParameter, // thread argument
- DWORD dwCreationFlags, // creation option
- LPDWORD lpThreadId // thread identifier
- );
参数说明:
lpThreadAttributes:指向SECURITY_ATTRIBUTES结构体,该结构体决定了函数返回句柄是否被子进线程继承。
如果为NULL,则不能被继承。
dwStackSize:指定了线程的堆栈大小,一般为0,使用默认的堆栈大小。
lpStartAddress:指向应用定义的线程函数,线程函数类型为LPTHREAD_START_ROUTINE。此值代表线程的开始地址。
lpParameter:线程函数所带的参数。是一个指向结构的指针,不需传递参数时,为NULL。
dwCreateFlags:线程标志。如果指定为CREATE_SUSPENDED,线程创建的时候的状态为挂起状态,
线程不会立即执行直到调用ResumeThread函数。
如果值为0,线程会立即执行。
lpThreadId:保存新线程的id.
hThread = CreateThread(
NULL, // SD
0, // initial stack size
(LPTHREAD_START_ROUTINE)ThreadProc, // thread function
NULL, // thread argument
0, // creation option
&threadID // thread identifier
);
NULL, // SD
0, // initial stack size
(LPTHREAD_START_ROUTINE)ThreadProc, // thread function
NULL, // thread argument
0, // creation option
&threadID // thread identifier
);
其中ThreadProc 为线程程序,你所需要运行的程序放在ThreadProc中就可以了。
0 0
- C++学习笔记--线程简单应用
- 【C#】线程学习笔记
- c++pirmer 学习笔记之指针简单应用。
- 线程学习的简单笔记
- 线程池学习简单笔记
- JAVA学习笔记(3)_____线程同步锁(synchronized)简单的应用
- python 学习笔记简单线程池实现
- 【狂人C】学习笔记之一个简单的乘法函数的应用
- IOS学习笔记之二:Object C的简单应用(对比Java)
- Linux+C学习笔记之多线程
- VS线程学习笔记(C++)
- UltraWebGrid简单应用。(.net学习笔记)
- Android学习笔记_46_fragment的简单应用
- 学习笔记之Oracle(简单应用)
- 《Windows via C/C++》学习笔记 —— Windows 线程
- 《Windows via C/C++》学习笔记(二线程)
- 《Windows via C/C++》学习笔记(三)线程
- C语言学习知识点(三):简单的学习应用
- eclipse里报:An internal error occurred during: "Building workspace". Java heap space)
- sizeThatFits and sizeToFit是UIView的两个方法, 官方文档上说:
- Redis介绍以及安装(Linux)
- cache---php控制浏览器缓存
- lock
- C++学习笔记--线程简单应用
- iOS 数组的去重(普通的无序的去重和排序好的去重)
- appframework事件
- entityframework中的codefirst模式练习(一)
- 工作日志4-22
- Win7下搭建JAVA并行开发环境MPJ Express(PART2)
- FFmpeg的H.264解码器源代码简单分析:宏块解码(Decode)部分-帧间宏块(Inter)
- IOS开发中多线程的使用
- uboot启动流程分析之六