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

网站开发师培训要加强分院网站建设

网站开发师培训,要加强分院网站建设,南宁公司网站建设方案,网站建设接外包流程图线程允许多个程序任务在统一时间执行#xff0c;不同的线程可以共享内存空间#xff0c;每个线程也有自己的栈空间。 线程类 thread 类thread表示单个执行线程。线程在thread构造对象时开始执行。每个thread对象表示唯一的一个线程#xff0c;thread不支持复制构造和复制…线程允许多个程序任务在统一时间执行不同的线程可以共享内存空间每个线程也有自己的栈空间。 线程类 thread 类thread表示单个执行线程。线程在thread构造对象时开始执行。每个thread对象表示唯一的一个线程thread不支持复制构造和复制赋值函数。 构造函数 默认的构造函数构造一个不表示任何线程的thread对象 thread() noexcept; 构造函数可以传入一个函数并关联一个执行线程构造完成后函数将在该线程上开始运行 template class F, class... Args explicit thread( F f, Args... args ); 代码示例 auto func [](int index) {for (int i 0; i 15; i){std::cout index;std::this_thread::sleep_for(std::chrono::milliseconds(10));} };std::thread t1(func, 1); std::thread t2(func, 2); t1.join(); t2.join(); std::cout std::endl; t1和t2分别在两个线程上同时执行打印出来的1和2可能是交错的可能的输出结果 122121121212121212212121212121 析构函数 销毁thread对象时必须合并或者分离底层线程否则会调用std::terminate导致程序崩溃。其内部实现大致为 ~thread() noexcept {if (joinable()) {terminate();} } 赋值函数 thread只支持移动赋值函数移动后线程的所有权被转交原thread对象不再表示任何线程。 joinable 检查线程是否可合并如果thread代表的线程是活跃的那么joinable返回true。代码示例 std::cout std::boolalpha;std::thread t; std::cout t joinable: t.joinable() std::endl; t std::thread([](){}); std::cout t joinable: t.joinable() std::endl; t.join(); std::cout t joinable: t.joinable() std::endl;输出结果 t joinable: false t joinable: true t joinable: false get_id 获取线程的id。代码示例 std::thread t1; std::thread t2 std::thread([](){}); std::thread t3 std::thread([](){});std::cout t1 id: t1.get_id() std::endl; std::cout t2 id: t2.get_id() std::endl; std::cout t3 id: t3.get_id() std::endl;t2.join(); t3.join();输出结果 t1 id: 0 t2 id: 97068 t3 id: 73212 native_handle 获取底层实现的线程句柄。代码示例 std::thread t std::thread([](){});std::thread::native_handle_type handle t.native_handle(); std::cout native handle: handle std::endl; t.join();输出结果 native handle: 00000000000000A8 hardware_concurrency 返回系统的逻辑处理线程数。代码示例 auto num std::thread::hardware_concurrency(); std::cout hardware concurrency: num std::endl;可能的输出结果 hardware concurrency: 8 join 阻塞thread代表的线程直到其执行结束。代码示例 auto Func []() {std::cout t thread std::endl;std::this_thread::sleep_for(std::chrono::seconds(1)); };std::thread t(Func); t.join(); std::cout Done std::endl;输出结果 t thread Done detach 将thread管理的线程从thread中分离thread不再代表任何线程。代码示例 auto Func []() {std::this_thread::sleep_for(std::chrono::seconds(1));std::cout Func about to end std::endl; };std::thread t(Func); t.detach(); std::cout t detach std::endl; std::this_thread::sleep_for(std::chrono::seconds(5));输出结果 t detach Func about to end swap、std::swap 交换两个thread管理的线程。 jthread 和thread类似jthread管理一个执行线程。不同的是当jthread析构时会自动合并线程。jthread内部还有一个stop_source成员stop_source包含stop_token对象jthread可以接受一个用stop_token作为首参数的函数用于执行线程访问jthread有一个request_stop接口用于修改stop_token的状态这允许执行函数根据stop_token的状态来决定是否终止函数运行。 构造函数 构造一个jthread对象并关联一个执行线程默认构造函数不关联任何线程。代码示例 auto func [](int index) {for (int i 0; i 15; i){std::cout index;std::this_thread::sleep_for(std::chrono::milliseconds(10));} };std::jthread t1(func, 1); std::jthread t2(func, 2); t1.join(); t2.join(); std::cout std::endl;输出结果 122112121212122121211212211212 析构函数 jthread对象析构时会尝试合并其管理的执行线程其内部实现大致为 ~jthread() {if (joinable()) {request_stop();join();} }赋值函数 jthread只支持移动赋值函数移动后线程的所有权被转交原jthread对象不再表示任何线程。 joinable 检查线程是否可合并如果thread代表的线程是活跃的那么joinable返回true。 get_id 获取线程的id。 native_handle 获取底层实现的线程句柄。 hardware_concurrency 返回系统的逻辑处理线程数。 join 阻塞thread代表的线程直到其执行结束。 detach 将jthread管理的线程从jthread中分离jthread不再代表任何线程。 swap、std::swap 交换两个jthread管理的线程。 停止记号处理 jthread提供了get_stop_source、get_stop_token用于获取stop_source和stop_token对象requset_stop接口用于修改stop_token状态为停止jthread关联的执行函数可以通过其第一个参数stop_token用于其状态。代码示例 auto Func [](std::stop_token token) {for (int i 0; i 10; i){if (token.stop_requested()){std::cout i token stop_requested true std::endl;}else{std::cout i token stop_requested false std::endl;}std::this_thread::sleep_for(std::chrono::milliseconds(100));} };std::jthread t(Func); std::this_thread::sleep_for(std::chrono::milliseconds(350)); t.request_stop();可能的输出结果 0 token stop_requested false 1 token stop_requested false 2 token stop_requested false 3 token stop_requested false 4 token stop_requested true 5 token stop_requested true 6 token stop_requested true 7 token stop_requested true 8 token stop_requested true 9 token stop_requested true 注意最后一行代码 t.request_stop(); 不是必须的因为对象 t 在析构时也会调用request_stop函数。 当前线程管理函数 yield 重调度线程的执行允许其他线程运行。具体效果依赖于编译器的实现。 get_id 返回当前线程的id。代码示例 auto Func []() {std::cout thread id: std::this_thread::get_id() std::endl; };std::thread t1(Func); std::thread t2(Func); Func();t1.join(); t2.join();输出结果 thread id: 22388 thread id: 79692 thread id: 85280 sleep_for 阻塞当前线程一段时间。代码示例 auto t1 std::chrono::system_clock::now(); std::this_thread::sleep_for(std::chrono::milliseconds(300)); auto t2 std::chrono::system_clock::now(); std::chrono::durationdouble, std::milli time t2 - t1; std::cout time pass: time.count() std::endl;可能的输出结果 time pass: 302.473 sleep_util 阻塞当前线程到指定的时间点。代码示例 auto t1 std::chrono::system_clock::now(); std::this_thread::sleep_until(t1 std::chrono::milliseconds(400)); auto t2 std::chrono::system_clock::now(); std::chrono::durationdouble, std::milli time t2 - t1; std::cout time pass: time.count() std::endl;可能的输出结果 time pass: 400.504
http://www.hkea.cn/news/14538170/

相关文章:

  • 十大网站建设菠菜网站模板
  • 临海大经建设集团网站多层次网络营销合法吗
  • 网站设置默认主页做网站有没有免费空间
  • 域名只做邮箱没网站要备案吗flash网站下载
  • 徐州手机网站上海优秀网站设计
  • 建设银行官网站预约怎样做彩票投资网站
  • 怎样才可以知道网站是否优化网络推广文案案例
  • 网站管理系统 phpwordpress数据库容量
  • 兼职做视频的网站青岛企业自助建站系统
  • 旅游网站排行榜前十名官网wordpress支付功能
  • 上海建站网站的企业腾讯网站建设方案
  • 网站建设免费教程h5制作网站开发
  • 百度联盟 网站备案信息wordpress根目录
  • 西安网站排名哪家公司好网站开发学习网站
  • 莆田网站关键词优化wordpress 交友模板
  • 网站多少图片怎么做超链接翠竹林 wordpress
  • 建网站wordpress观音桥网站建设网站建设
  • 凡科建站如何制作论坛wordpress 多媒体播放
  • 做外快的网站服务器做ssr后还可以做网站吗
  • 浙江省城乡建设网站证件查询企业网站做备案
  • 广东东莞自己建站教程宁波网站建设制作公司排名
  • 西安网站建设加q479185700网站设计制作收费明细
  • 网站建设夬金手指排名壹陆建设网站费用计入什么费用
  • 网站建设更新维护工作图片展示网站php源码
  • 做参茸产品的网站wordpress主题手机制作教程
  • 邵阳网站设计南京佛搜做网站公司
  • 德阳手机网站建设电子商务公司的经营范围有哪些
  • 辽宁手机版建站系统信息桂林森禾医药有限公司
  • 番禺做网站多少钱雅布设计
  • 论坛网站建设公司做网站就找喇叭人