VC多线程的用法

.h 文件
#define WM_TEST    WM_USER + 1

class CTestThread : public CWinThread
{
DECLARE_DYNCREATE(CTestThread)
protected:
CTestThread ();
virtual ~CTestThread ();
public:
virtual BOOL InitInstance();
virtual int  ExitInstance();
protected:
afx_msg void OnTest(WPARAM wParam,LPARAM lParam);
DECLARE_MESSAGE_MAP()
};

.Cpp 文件
#include "stdafx.h"
#include "TestThread.h"

IMPLEMENT_DYNCREATE(CTestThread, CWinThread)

CTestThread::CTestThread()
{
}

CTestThread::~CTestThread()
{
}

BEGIN_MESSAGE_MAP(CTestThread, CWinThread)
ON_THREAD_MESSAGE(WM_TEST,OnTest)
END_MESSAGE_MAP()

BOOL CTestThread::InitInstance()
{
return TRUE;
}

int CTestThread::ExitInstance()
{
return CWinThread::ExitInstance();
}

void CTestThread::OnTest(WPARAM wParam,LPARAM lParam)
{
AfxMessageBox("test");
}

调用的地方
    CWinThread* m_pThrd;
//启动
m_pThrd = AfxBeginThread(RUNTIME_CLASS(CTestThread));

// 需要执行线程中的操作时
m_pThrd->PostThreadMessage(WM_TEST,NULL,NULL);

// 结束线程
HANDLE hp=m_pThrd->m_hThread;
if (hp)
{
if (WaitForSingleObject(hp, 1) != WAIT_OBJECT_0)
{
TerminateThread(hp,0);
}
CloseHandle(hp);
}

 本文用菊子曰发布

时间: 2024-08-24 06:08:08

VC多线程的用法的相关文章

Python爬虫进阶五之多线程的用法

前言 我们之前写的爬虫都是单个线程的?这怎么够?一旦一个地方卡到不动了,那不就永远等待下去了?为此我们可以使用多线程或者多进程来处理. 首先声明一点! 多线程和多进程是不一样的!一个是 thread 库,一个是 multiprocessing 库.而多线程 thread 在 Python 里面被称作鸡肋的存在!而没错!本节介绍的是就是这个库 thread. 不建议你用这个,不过还是介绍下了,如果想看可以看看下面,不想浪费时间直接看 multiprocessing 多进程 鸡肋点 名言: "Pyt

VC多线程临界区

在使用多线程时,一般很少有多个线程完全独立的工作.往往是多个线程同时操作一个全局变量来获取程序的运行结果.多个线程同时访问同一个全局变量,如果都是读取操作,则不会出现问题.如果是写操作,则会发生错误.这时候,我们可以通过临界区,为全局变量设置一个保护,保证同时只有一个线程可以访问此变量,其他变量进入等待状态. 临界区(Critical Section)是一段独占对某些共享资源访问的代码,在任意时刻只允许一个线程对共享资源进行访问.如果有多个线程试图同时访问临界区,那么在有一个线程进入后其他所有试

ios中的多线程的用法总结

ios中的多线程的用法总结 1.进程的基本概念 (1)每一个进程都是一个应用程序,都有独立的内存空间,一般来说一个应用程序存在一个进程,但也有多个进程的情况 (2)同一个进程的线程共享内存中的内存和资源 2.多线程的基本概念 (1)每一个程序都有一个主线程,程序启动时创建(调用main来启动). (2)多线程技术表示,一个应用程序有多个线程,使用多线程能提供CPU的利用率,防止主线程被堵塞. (3)任何有可能堵塞主线程的任务不要在主线程执行(如:访问网络). (4)主线程的生命周期和应用程序绑定

php异步多线程swoole用法实例

摘要:本文实例讲述了php异步多线程swoole用法.分享给大家供大家参考.具体分析如下:swoole重新定义PHP语言的高性能网络通信框架,提供了PHP语言的异步多线程服务,下面的实例就可以证实这一功能.一般来说,Swoole提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询.swoole 本文实例讲述了php异步多线程swoole用法.分享给大家供大家参考.具体分析如下: sw

VC多线程编程学习笔记(一)

最近两天在学多线程编程,有了一些心得,写下来和大家一起共勉.文中一些部分引用了韩耀旭的文章<多线程编程>http://www.vckbase.com/document/viewdoc/?id=1704和MSDN资料. 一.缘起 工作上要用到串口编程,本来一直是用mscomm控件来进行串口通讯的,后来觉得这个控件功能不灵活,想直接使用api编程,那就不可避免的要使用多线程技术:用一个支线程一直挂在那里监听串口,就不影响主线程的消息循环了. 二.为何要用多线程 有时候需要把程序的运行挂起一段时间,

VC++多线程编程-线程间的通信和线程同步

引用:http://blog.csdn.net/zjc0888/article/details/7372258 线程间通讯 一般而言,应用程序中的一个次要线程总是为主线程执行特定的任务,这样,主线程和次要线程间必定有一个信息传递的渠道,也就是主线程和次要线程间要进行通信.这种线程间的通信不但是难以避免的,而且在多线程编程中也是复杂和频繁的,下面将进行说明. 使用全局变量进行通信 由于属于同一个进程的各个线程共享操作系统分配该进程的资源,故解决线程间通信最简单的一种方法是使用全局变量.对于标准类型

VC++多线程编程

一.问题的提出 编写一个耗时的单线程程序: 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下: void CSingleThreadDlg::OnSleepSixSecond() { Sleep(6000); //延时6秒 } 编译并运行应用程序,单击“延时6秒”按钮,你就会发现在这6秒期间程序就象“死机”一样,不在响应其它消

Vc++ 控件用法总结之List Control

1.新建对话框MFC,在对话框上放一个ListCtrl ID:IDC_PATH View:Report 2.为ListCtrl添加变量 右击->添加变量m_wndPath 3.找到OnInitDialog()函数添加如下代码: // TODO: 在此添加额外的初始化代码 m_wndPath.DeleteAllItems();//清空 m_wndPath.InsertColumn(0,_T("项目"));//添加列 m_wndPath.InsertColumn(1,_T("

C#多线程的用法10-线程池

TheadPool:在进行多线程编程时,如果不想频繁的创建线程,那可以考虑使用使用线程池来完成多线程编程的工作.你只需将要处理的任务交付给ThreadPool,如果ThreadPool中有空闲的线程,ThreadPool就会将你交付的任务分给一个空闲的线程去执行:如果ThreadPool中没有空闲的线程可用,ThreadPool就会自动新建一个线程来处理你交付的任务. ThreadPool中的线程也可用本系列文章所讲过的内容进行同步,因此本问仅仅演示Thread Pool的基本用法,希望通过该问