C++服务器开发之基于对象的编程风格
来源:互联网 发布:java asm问题处理 编辑:程序博客网 时间:2024/05/18 14:43
Thread.h
#ifndef _THREAD_H_#define _THREAD_H_#include <pthread.h>#include <boost/function.hpp>class Thread{public:typedef boost::function<void ()> ThreadFunc;explicit Thread(const ThreadFunc& func);void Start();void Join();void SetAutoDelete(bool autoDelete);private:static void* ThreadRoutine(void* arg);void Run();ThreadFunc func_;pthread_t threadId_;bool autoDelete_;};#endif // _THREAD_H_
Thread.cpp
#include "Thread.h"#include <iostream>using namespace std;Thread::Thread(const ThreadFunc& func) : func_(func), autoDelete_(false){}void Thread::Start(){pthread_create(&threadId_, NULL, ThreadRoutine, this);}void Thread::Join(){pthread_join(threadId_, NULL);}void* Thread::ThreadRoutine(void* arg){Thread* thread = static_cast<Thread*>(arg);thread->Run();if (thread->autoDelete_)delete thread;return NULL;}void Thread::SetAutoDelete(bool autoDelete){autoDelete_ = autoDelete;}void Thread::Run(){func_();}
Thread_Test.cpp
#include "Thread.h"#include <boost/bind.hpp>#include <unistd.h>#include <iostream>using namespace std;class Foo{public:Foo(int count) : count_(count){}void MemberFun(){while (count_--){cout<<"this is a test ..."<<endl;sleep(1);}}void MemberFun2(int x){while (count_--){cout<<"x="<<x<<" this is a test2 ..."<<endl;sleep(1);}}int count_;};void ThreadFunc(){cout<<"ThreadFunc ..."<<endl;}void ThreadFunc2(int count){while (count--){cout<<"ThreadFunc2 ..."<<endl;sleep(1);}}int main(void){Thread t1(ThreadFunc);Thread t2(boost::bind(ThreadFunc2, 3));Foo foo(3);Thread t3(boost::bind(&Foo::MemberFun, &foo));Foo foo2(3);Thread t4(boost::bind(&Foo::MemberFun2, &foo2, 1000));t1.Start();t2.Start();t3.Start();t4.Start();t1.Join();t2.Join();t3.Join();t4.Join();return 0;}
不采用面向对象的编程风格,使用boost bind/function来实现,这就是基于对象的编程风格。
0 0
- C++服务器开发之基于对象的编程风格
- C++服务器开发之基于对象的编程风格
- 大并发服务器开发之基于对像的编程风格
- 《Essential C++》笔记五、基于对象的编程风格
- c++基于对象的编程风格
- c++基于对象的编程风格2
- 09基于对象编程风格
- 面向对象编程风格&基于对象编程风格
- Essential C++笔记(基于对象的编程风格)
- Essential C++中文版(Chap4:基于对象的编程风格)
- muduo网络库学习笔记(0):面向对象编程风格和基于对象编程风格的比较
- 基于Objective-C的面向对象编程
- 基于C语言的面向对象编程
- 面向对象的风格和基于对象的风格程序设计
- c语言的编程风格
- c语言的编程风格
- c语言的编程风格
- c语言的编程风格
- SVN删除和恢复
- CC150小结概念与算法
- 欢迎使用CSDN-markdown编辑器
- Android中Spinner的使用及其详细总结(可实现下拉列表)
- Java语言实现Luhn算法检验银行卡号
- C++服务器开发之基于对象的编程风格
- hprose spring集成 -- 让hproseservlet 使用spring的 bean
- boost::function的用法
- 网站中个有很多css和js 的时候需要使用optimization 合并成一个
- 利用Charles 抓取https连接
- C++服务器开发之笔记三
- 根据NSString生成URL时报错
- InstallShield 脚本语言学习笔记
- Windows 常用运行库下载 (DirectX、VC++、.Net Framework等)