当前位置: 首页 > news >正文

小男孩做爰网站西安网站设计招聘

小男孩做爰网站,西安网站设计招聘,在win10下建设网站,合肥网络公司行情C11线程库 C11也提供了对应的线程库#xff0c;在头文件thread中#xff1b;C11将其封装成thread类#xff0c;通过类实例化出对象#xff0c;调用类内成员方法进行线程控制。 #include iostream #include thread #include unistd.h using…C11线程库 C11也提供了对应的线程库在头文件thread中C11将其封装成thread类通过类实例化出对象调用类内成员方法进行线程控制。 #include iostream #include thread #include unistd.h using namespace std; void func() {int cnt 3;while(cnt--){coutthread : cntendl;sleep(1); } } int main() {thread td(func);//创建线程sleep(5);td.detach();//线程分离td.join();//线程等待return 0; }线程封装 C11实现的线程thread是对pthread库的封装这里也对pthread库做简单封装 首先要封装实现一个thread类其中要包括成员变量线程ID、分离状态detach、运行状态runing、返回值、线程名称等等 namespace mypthread {class thread{public:private:pthread_t _tid;std::string _name;bool _detach;bool _runing;void* retval;}; }构造函数创建线程 像Cthread一样在创建对象时就将线程要执行的方法传入那在thread类中就要存在一个成员变量func没有参数、没有返回值的这里就要使用C11语法function包装器 using func std::functionvoid(void);这样在类内定义void(void)类型的成员变量。但是我们知道在调用pthread_create创建线程时要传递的函数类型是(void*(void*))类型的所以就还要存在一个void*(void*)类型的函数我们可以将该方法实现成静态成员函数 但是这个函数还要可以访问thread类内成员func静态成员函数没有隐藏的this指针这里可以将this作为参数传递给线程要调用的方法pthread_create第四个参数 namespace mypthread {static int count 1;using func std::functionvoid(void);class thread{static void *routine(void *msg){// 传递的是this指针thread *td static_castthread *(msg);std::cout td-_name std::endl;// 调用funtd-_fun();return (void *)100;}public:thread(func fun) : retval(nullptr), _fun(fun), _detach(false){_name thread- std::to_string(count);count;int n pthread_create(_tid, nullptr, routine, (void *)this);if (n ! 0){std::cerr pthread_create std::endl;}_runing true;}private:pthread_t _tid;std::string _name;bool _detach;bool _runing;void *retval;func _fun;}; }这里为了方便测试存在一个count计数器为了生成线程名称_name。 线程分离 在创建线程之后我们可以设置线程分离void Detach(){if(_detach)return;pthread_detach(_tid);_deatch true;}线程取消 我们可以调用pthread_cancel来取消线程bool Cancel(){if (_runing false)return;int n pthread_cancel(_tid);if (n ! 0){std::cerr pthread_cancel std :: endl;return false;}return true;}线程等待 新创建的线程在运行结束后需要进行线程等待这里实现就直接调用pthread_join阻塞等待线程然后将线程的返回值放到_retval中。void Join(){pthread_join(_tid, _retval);}析构函数回收线程 对pthread库进行面向对象封装在thread析构函数中就要调用线程取消Cancel然后调用Join回收线程并获取线程的返回值。~thread(){Cancel();Join();}测试thread using namespace mypthread; void test() {int cnt 3;while (cnt--){std::cout new thread : cnt std::endl;sleep(1);} } int main() {thread td(test);sleep(5);return 0; }这样在main函数中就算我们没有显示调用Join等待在线程thread对象出了作用域后自动调用析构函数从而调用Cancel和Join回收线程。 番外 对于线程封装这里实现了另外一种版本 在创建thread对象之后并不会立即创建新线程而是调用Start才会创建新线程 此外我们可以在没有创建线程时设置detach分离状态也可以在线程运行时设置detach分离状态 namespace mythread {static int count 1;using func_t std::functionvoid();class Thread{static void *rontinue(void *args){Thread *pt static_castThread *(args);pt-_fun();return (void*)pt-_name.c_str();}void EnableDetach() { _detach true; }void EnableRuning() { _runing true; }public:Thread(func_t fun) : _tid(-1), _detach(false), _runing(false), _fun(fun), _retval(nullptr){_name thread- std::to_string(count);count;}void Start(){if (_runing)return;// 创建线程int n pthread_create(_tid, nullptr, rontinue, this);if (n ! 0){std::cerr pthread_create std::endl;exit(1);}EnableRuning();Detach();}void Detach(){if (_detach){if (_runing){pthread_detach(_tid);}EnableDetach();}}void Cancel(){if (_runing){pthread_cancel(_tid);}_runing false;}void Join(){if (_detach)return;pthread_join(_tid, _retval);}std::string GetName(){return _name;}private:pthread_t _tid; // 线程idstd::string _name; // 线程名bool _detach; // 分离状态bool _runing; // 运行状态func_t _fun; // 线程执行函数void *_retval; // 返回值}; }简单总结本篇文章对pthread库做了简单封装实现了简单的thread类。
http://www.zqtcl.cn/news/348500/

相关文章:

  • wordpress安装微信登录插件青岛网站seo技巧
  • 燕郊个人做网站超变传奇手游刀刀切割无会员散人
  • 有没有可以做兼职的网站网站建设发展方向有哪些
  • php网站后台上传图片有没有推荐到首页的功能客户求购平台
  • 大型网站的标准莱芜市官网
  • 建站用Wordpress还是青州网站建设青州
  • 百度网站收录更新建网站的公司赚钱吗
  • 哪种语言做网站最快网站大全app下载
  • 手机营销网站制作网站建设备案和免备案的区别
  • 浙江省住房和城乡建设厅网站打不开中国建设银行官网站纪念币预约
  • 推广软件的网站安徽省城乡建设网站
  • 用网站做淘宝客怎么样珍爱网
  • 龙岩建设局招聘网站网站dns解析失败
  • 音乐网站的音乐怎么做深圳美容网站建设
  • 贵阳市观山湖区网站建设wordpress博客vieu模板
  • 怎么区分网站的好坏网站建设营销型号的区别
  • wordpress固定链接 中文建设网站优化
  • 东莞地产网站建设简述建设iis网站的基本过程
  • 外贸网站建设 公司价格怎样在手机上制作网站
  • 网站建设电话销售录音企业做网站有什么用
  • 网站布局设计软件软件工程大学排名
  • 自己的网站做防伪码深圳软件开发公司招聘
  • 网上购物网站大全wordpress文本悬停变色
  • 科技类公司网站设计如何做各大网站广告链接
  • 深圳做h5网站制作奢侈品网站设计
  • 用什么程序做网站佛山网站建设慕枫
  • 萍乡网站建设哪家公司好惠州开发做商城网站建设哪家好
  • 2021半夜好用的网站在菲做平台网站
  • 国家排污许可网站台账怎么做wordpress表单位插件
  • 如何构建成交型网站wordpress搭建英文网站