面向对象与基于对象 学习记录 thread举例

// 1.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <windows.h>

using namespace std;

class CThread{
public:
	CThread();
	virtual ~CThread();
	bool Start();
	void Join();
	static DWORD WINAPI ThreadProc( LPVOID lpParameter);
	virtual void Run() = 0;
private:
	HANDLE	hThread_;
	DWORD	dwThreadId_;
};

CThread::CThread():
hThread_(NULL),dwThreadId_(0)
{
	cout << "Thread ..." << endl;
}

CThread::~CThread()
{
	if(hThread_ != NULL)
		CloseHandle(hThread_);
	cout << "~Thread ..." << endl;
}

bool CThread::Start()
{
	bool bRet = false;
	hThread_ = CreateThread(
		NULL,              // default security attributes
		0,                 // use default stack size
		ThreadProc,          // thread function
		this,             // argument to thread function
		0,                 // use default creation flags
		&dwThreadId_);   // returns the thread identifier 

	if(hThread_)
	{
		bRet = true;
	}
	return bRet;
}

void CThread::Join()
{
	WaitForSingleObject(hThread_,3000);
}

DWORD CThread::ThreadProc( LPVOID lpParameter)
{
	CThread* thread = static_cast<CThread*>(lpParameter);
	thread->Run();
	return NULL;
}

class CMyThread:public CThread
{
public:
	void Run(){ cout << "my thread..." << endl;}
};

int _tmain(int argc, _TCHAR* argv[])
{
	while(1)
	{
		CMyThread a;
		a.Start();
		a.Join();
	}

	return 0;
}

  待续

时间: 2024-10-12 14:30:43

面向对象与基于对象 学习记录 thread举例的相关文章

面向对象与基于对象的区别

面向对象和基于对象的区别是多态,和继承无关. 基于对象仅仅支持了抽象数据类型的功能,继承也不过体现了一种is-a的关系,也是抽象数据类型,只是建立了一个层次体系.但是什么是面向对象呢?就是根 据对象的实际类型不同,可以自动完成不同的行为,而仅仅通过一致的调用形式.换句话说,也就是虚函数实现的多态.以上观点,在OO设计中已经得到了公认, 多态的另一种实现方法是泛型. “面向对象”和“基于对象”两个不同的概念.面向对象的三大特点(封装,继承,多态)却一不可,通常“基于对象”使用对象,但是无法利用现有

关于面向对象和基于对象

面向对象和基于对象的区别是多态,和继承无关. 基于对象仅仅支持了抽象数据类型的功能,继承也不过体现了一种is-a的关系,也是抽象数据类型,只是建立了一个层次体系.但是什么是面向对象呢?就是根据对象的实际类型不同,可以自动完成不同的行为,而仅仅通过一致的调用形式.换句话说,也就是虚函数实现的多态.以上观点,在OO设计中已经得到了公认,多态的另一种实现方法是泛型. “面向对象”和“基于对象”两个不同的概念.面向对象的三大特点(封装,继承,多态)却一不可,通常“基于对象”使用对象,但是无法利用现有的对

Git 教程 -- 基于自己学习记录

Git 教程 -- 基于自己学习记录 1. 引言 由于学校布置了一项熟悉 git 和 svn 操作的实验,所以自己重新温习了下 git,记录过程在这. 2. 注册登录 GitHub. 3. 选择一个仓库克隆到本地,这里以我自己的一个私人项目为例,克隆到本地. git clone https://github.com/weixuqin/love_source.git //克隆项目到本地 4. 创建dev 分支,并切换到dev分支. git checkout -b dev //创建dev分支 git

SVN教程 -- 基于自己学习记录

SVN教程 -- 基于自己学习记录 1. 概述 a. 什么是SVN? Apache Subversion 通常被缩写成 SVN,是一个开放源代码的版本控制系统.相较于 git ,svn 是集中式版本控制系统. SVN官网链接 b. 什么是集中式版本控制系统? 集中式版本控制系统可以这样理解:所有的源代码都放在统一的服务器上,开发者从服务器下载项目组的最新代码,进入自己的分支进行开发工作,提交代码,最后再把自己的分支合并到服务器主分支上,更新服务器源代码.由于源代码最后都是放在服务器上的,服务器统

jsp内置对象学习记录

1.session,是一个会话保留在服务器端的对象(默认保留时间为30分钟),所以我们可以在session里面放用户信息以便后续的访问便利(缺点:cookie劫持,导致用户数据泄露).案例:(1)同个用户在30分钟内访问自己权限内的任意页面(不用每次都要提交用户名和密码).(2)购物车的实现 2.pageContext,是一个页面间传递数据的对象,可以通过pageContext读取任意范围内的属性值. 案例:<%=pageContext.findAttribute("name")

C++学习之路: 线程封装(基于对象编程)

引言: 此次我们重新封装线程, 采用基于对象编程的方式,不用于面向对象编程中重定义虚函数的方式,这里我们用回调函数的方式. Thread.h 1 #ifndef THREAD_H_ 2 #define THREAD_H_ 3 4 #include <boost/noncopyable.hpp> 5 #include <functional> 6 #include <pthread.h> 7 8 class Thread : boost::noncopyable 9 {

JavaScript学习总结(九)——Javascript面向(基于)对象编程

一.澄清概念 1.JS中"基于对象=面向对象" 2.JS中没有类(Class),但是它取了一个新的名字叫"原型对象",因此"类=原型对象" 二.类(原型对象)和对象(实例)的区别与联系 1.类(原型对象)是抽象,是概念的,代表一类事物. 2.对象是具体的,实际的,代表一个具体的事物. 3.类(原型对象)是对象实例的模板,对象实例是类的一个个体. 三.抽象的定义 在定义一个类时,实际上就是把一类事物的共有属性和行为提取出来,形成一个物理模型(模板)

JavaScript学习记录day9-标准对象

JavaScript学习记录day9-标准对象 [TOC] 在JavaScript的世界里,一切都是对象. 但是某些对象还是和其他对象不太一样.为了区分对象的类型,我们用typeof操作符获取对象的类型,它总是返回一个字符串: typeof 123; // 'number' typeof NaN; // 'number' typeof 'str'; // 'string' typeof true; // 'boolean' typeof undefined; // 'undefined' typ

Asp.Net MVC学习记录之“一个实体对象不能由多个 IEntityChangeTracker 实例引用”

原文:浅谈 js 正则之 test 方法 其实我很少用这个,所以之前一直没注意这个问题,自从落叶那厮写了个变态的测试我才去看了下这东西.先来看个东西吧. ? 1 2 3 4 5 var re = /\d/; console.log( re.test("1") ); console.log( re.test("1") ); console.log( re.test("1") ); console.log( re.test("1"