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

虚拟主机建站教程杭州房产免费网站建设

虚拟主机建站教程,杭州房产免费网站建设,一流的成都 网站建设,wordpress不填标题无法发布线程的创建 用std::thread创建线程非常简单#xff0c;只需要提供线程函数或者线程对象即可#xff0c;并可以同时指定线程函数的参数。下面是创建线程的示例#xff1a; #include thread #include iostream using namespace std;void func() {cout 只需要提供线程函数或者线程对象即可并可以同时指定线程函数的参数。下面是创建线程的示例 #include thread #include iostream using namespace std;void func() {cout thread run.... endl; }/// g thread.cpp -lpthread int main() {std::thread t(func);t.join();cout main over... endl;return 0; } 在上例中函数func将会运行于线程对象t中join函数将会阻塞直到线程函数执行结束如果线程函数有返回值返回值将被忽略。 如果不希望线程被阻塞执行可以调用线程的detach方法将线程和线程对象分离。比如下面的例子 #include thread #include iostream #include string.h using namespace std;void func() {cout thread run.... endl; }/// g thread.cpp -lpthread int main() {std::thread t(func);t.detach();///做其他事情cout main over... endl;while(1){if(getchar()){break;}}return 0; } 通过detach线程就和线程对象分离了让线程作为后台线程去执行当前线程也不会阻塞了。但需要注意的是detach之后就无法再和线程发生联系了比如detach之后就不能再通过join来等待 线程执行完成线程何时执行完成我们也无法控制了。 线程还可以接收任意个数的参数 #include thread #include iostream #include string.h #include string using namespace std;void func(int i, double db, const string str) {cout i endl;cout db endl;cout str endl; }/// g thread.cpp -lpthread int main() {std::thread t(func, 1, 2, test);t.detach();getchar();return 0; } 上面的例子将会输出 1 2 test 使用这种方法创建线程很方便但需要注意的是std::thread出了作用域之后将会析构这时如果线程函数还没有执行完就会发生错误因此需要保证线程函数的生命周期在线程变量std::thread的生命周期之内。 线程不能复制但可以移动例如 #include thread #include iostream #include string.h #include string using namespace std;void func() {cout 111111111111 endl; }/// g thread.cpp -lpthread int main() {std::thread t(func);std::thread t1(std::move(t));t1.join();getchar();return 0; } 线程被移动之后线程对象t将不在不代表任何线程了。另外还可以通过std::bind或lambda表达式来创建线程代码如下 #include thread #include iostream #include string.h #include string #include functional using namespace std;void func(int a, double db) {cout a \t db endl; }/// g thread.cpp -lpthread int main() {std::thread t1(std::bind(func, 1, 2));std::thread t2([](int a, double db){ cout a \t db endl;}, 5, 6);t1.join();t2.join();getchar();return 0; } 需要注意的是线程对象的生命周期比如下面的代码 #include thread #include iostream #include string.h #include string #include functional using namespace std;void func(int a, double db) {cout a \t db endl; }/// g thread.cpp -lpthread int main() {std::thread t1(func, 1, 2);///join函数注释了会有异常发生///t1.join();return 0; } 上面的代码运行可能会抛出异常因为线程对象可能先于线程函数结束应该保证线程对象的生命周期在线程函数执完时仍然存在。可以通过join方法来阻塞等待线程函数执行完或者通过detach方法让线程在后台执行。 线程的基本用法 获取当前信息 线程可以通过当前线程的ID还可以获取CPU核心数量例如 #include thread #include iostream #include string.h #include string #include functional using namespace std;void func() { }/// g thread.cpp -lpthread int main() {std::thread t1(func);cout t1.get_id() endl;cout std::thread::hardware_concurrency() endl;t1.join();return 0; } 线程休眠 可以使当前线程休眠一定时间代码如下 #include thread #include iostream #include string.h #include string #include functional using namespace std;void func() {std::this_thread::sleep_for(std::chrono::seconds(3));cout time out endl; }/// g thread.cpp -lpthread int main() {std::thread t1(func);t1.join();return 0; } 在上面的例子中线程将会休眠3秒3秒之后将打印time out。
http://www.hkea.cn/news/14380047/

相关文章:

  • 外贸建站 知乎wordpress页面设置教程
  • 网站做等保官方网页qq登陆
  • 建筑网站案例wordpress会员微信支付
  • 私募网站建设莆田网站建站
  • 学做西餐的网站微企点建好网站后要怎么做
  • iis部署网站 红叉王者荣耀是哪家公司开发的
  • 无形资产 网站开发wordpress 图库插件
  • php企业网站整站源码seo网站优化推广
  • 关于门户网站建设讲话wordpress自动采集规则
  • 一个网站的后台怎么做做网站和视频剪辑用曲面屏
  • php网站模板源码国外男女直接做的视频网站
  • 镇海区建设交通局网站进不去了广西柳州网站建设小程序公司
  • 陕西省建设信息管理网站国内现货交易平台
  • 东莞网站建设制作价格哪些网站建设公司
  • 注册查询官方网站114啦网址导航官网
  • 番禺建设网站外包小制作作文400字
  • HTML做网站的书籍商丘做网站需要多少钱
  • 网站中全景是怎么做的网页界面设计方案
  • wordpress网站导航子菜单中国建设银行保函查询网站
  • 中国建设银行官方网站物流公司做网站注重什么
  • 虹口免费网站制作四川旅游攻略
  • 帮非法集资公司做网站违法吗常见的网络营销手段
  • 做微商童装网站网络推广招聘信息怎么写
  • 眼镜网站建设青岛营销推广
  • 网页制作与网站建设试卷好网站建设公司服务
  • 备案 网站服务类型舟山网站建设优化
  • 分成型网站建设在线定制t恤
  • 345诛仙网站是谁做的凡科网
  • 公众号的微网站怎么做的做图网站有哪些
  • 网站建站对象如何在网上推广产品