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

网站如何提交百度收录食品网站建设方案项目书

网站如何提交百度收录,食品网站建设方案项目书,WordPress与dz用户恭喜,做企业网站用二级域名好吗目录 一、windows下多线程函数 1、CreateThread创建线程的过程如下#xff1a; 2、 _beginthread()创建线程过程如下#xff1a; 二、C接口跨平台接口 1、使用std::async创建多线程 2、使用std::thread类方法创建多线程 3、std::thread和std::async创建线程区别 4、std…目录 一、windows下多线程函数 1、CreateThread创建线程的过程如下 2、 _beginthread()创建线程过程如下  二、C接口跨平台接口 1、使用std::async创建多线程 2、使用std::thread类方法创建多线程 3、std::thread和std::async创建线程区别 4、std::thread类创建多线程demo 5、多线程的应用 附加知识 一、windows下多线程函数 1、CreateThread创建线程的过程如下 C多线程编程真实入门_Kprogram的博客-CSDN博客_c多线程编程 2、 _beginthread()创建线程过程如下  C多线程——_beginthread()和_beginthreadex_xuanyin235的专栏-CSDN博客 /*************************************************************************************************************/ 二、C接口跨平台接口 /******************C11中添加了新的线程创建使用方法常见的介绍如下***************************/ 1、使用std::async创建多线程 std::async创建函数如下 templatetypename _Fn, typename... _Argsfuture__async_result_of_Fn, _Args...async(launch __policy, _Fn __fn, _Args... __args); async的第一个参数launch为std::launch::async时创建的任务会创建新的子线程当第一个函数是std::launch::std::launch时async不创建新线程线程为async所在线程。 (1) 利用std::async异步线程创建过程见c11多线程编程九std::async介绍与实例_小麒麟的成长之路-CSDN博客_std::async (2) 利用std::future获取异步线程函数执行结果 c11多线程编程九std::async介绍与实例_小麒麟的成长之路-CSDN博客_std::async 2、使用std::thread类方法创建多线程 1join() 主线程等待创建的子线程运行结束。 join线程的使用场景是调用join的函数必须等待join的线程函数执行完成才可以进行往下执行否则阻塞调用join函数的线程直到join线程执行完毕。 2detach() 主线程与创建的子线程分离主线程不等待子线程运行结束. 利用detach函数创建线程detach使用场景detach()函数会让线程在后台运行即说明主线程不会等待子线程运行结束才结束。 需要注意的是detach中如果用到了主线程中的变量需要进行深拷贝保证使用的变量生命周期没有结束。 3、std::thread和std::async创建线程区别 1std::async函数可以跟std::futureT组合获取线程的执行结果创建时可能创建新线程或者不创建新线程跟async的第一个参数有关。 2std::thread类肯定会创建多线程如果需要捕获线程中执行结果可以在线程中将变量赋值给全局变量。 4、std::thread类创建多线程demo join的用法demo如下 #include iostream #include thread #include stdio.h #include vector #include Windows.h void func() {for (int i 0; i 10; i) {char chIn[50];sprintf_s(chIn, 49, thread::func is : %d, i); //sprintf_s(chIn, 49, thread::func is : %d\n, i);OutputDebugStringA(chIn);//调试控制台打印结果std::cout thread::func chIn std::endl; //dos命令窗口打印} } int main(int argc, char *argv[]) {std::vectorstd::thread threads; //存储线程函数的变量for (int i 0; i 10; i) {threads.push_back(std::thread(func));}for (auto thread : threads) {thread.join(); //执行线程变量中的每个线程执行函数}std::thread myFun(func);myFun.join();return 0; }思考若线程函数使用同一个vector类型的变量进行写操作会出现资源写入冲突的问题若使用map代替就不会出现因为map的键只能唯一当然在vector写入的时候加入锁也是可以解决的但是加锁在线程处理结果不能立即返回的情况下会影响性能。程序如下 #include iostream #include vector #include thread #include mutex #include map #include Windows.h using namespace std; std::vectorint vecGa;std::mapint,int mapGa; std::mutex va1; void fun1(int a) {//std::lock_guardstd::mutexlock(va1); // 若不加锁vector写入时会出现访问异常的问题//{// Sleep(100);// std::cout iiiiiiiiiiiii a std::endl;// vecGa.push_back(a);//}Sleep(100);std::cout iiiiiiiiiiiii a std::endl;mapGa.insert(pairint,int(a,a)); } int main() {std::vectorstd::threadvecTest;for (int i 0; i 100; i){vecTest.push_back(std::thread(fun1,i));}for (auto thread : vecTest){thread.join();}std::cout Hello World!\n; } 注多线程共享相同的变量时存在两种情况 1若线程间都是共同读取一个变量即访问同一块地址由于都不会改写该内存的数据所以不会产生数据修改的竞争不需要加锁。 2若线程间共同修改同一个变量即修改同一块地址的数据会出现数据修改的竞争问题都要加锁。 如 nNum 0;   thread1:    { nNum 2;}       thread2:{nNum5;} 当thread1运行到修改nNum时线程执行的碎片时间到   thread2获取执行权nNum值变        为5这时thread1获取到执行权这时thread1里面的变量已经变为了5执行操作后变        为7这个预期是不相符的。为了保证数据执行的顺序按照预期可以加锁。 局部变量的创建修改是不用加锁的因为每个线程里面的局部变量地址是不一样的公有变量的地址是一样的所以修改公有变量时必须加锁 若是想安装交替执行可以使用条件变量std::condition_variable 参考多线程mute/lock_guard/unique_lock/condition_variable访问同一公共资源_hanxiaoyong_的博客-CSDN博客 下面举一个例子 // MutTV.cpp : 此文件包含 main 函数。程序执行将在此处开始并结束。 //#include iostream #include vector #include thread #include mutex #include map #include Windows.h using namespace std; std::mutex va1; int nNum 0; void fun1(int a) {{std::lock_guardstd::mutexlock(va1);Sleep(100);nNum 2;std::cout iiiiiiiiiiiii nNum std::endl;} } void fun2(int a) {std::lock_guardstd::mutexlock(va1);{Sleep(100);nNum 5;std::cout jjjjjjjjjjjjjjjjj nNum std::endl;}} int main() {std::vectorstd::threadvecTest;for (int i 0; i 100; i){if (i 50) {vecTest.push_back(std::thread(fun1, i));}else{vecTest.push_back(std::thread(fun2, i));}}for (auto thread : vecTest){thread.join();}std::cout Hello World!\n; } 加锁运行情况如下 不加锁的运行如下 thread的线程函数绑定类成员函数如下 #include thread class A {void func1(int nValue){//todo} };void main() {A a;std::thread ths(Task::func1, a, 1);ths.detach();reutrn; } 5、多线程的应用 1多线程函数中若函数参数为引用则需要使用std::ref(var)。若常引用使用std::cref(var)具体可参考 c 中ref关键字的应用_c ref_qzy0621的博客-CSDN博客 2生产者消费者的多线程模式生产者消费者模式c_c 生产者消费者模式_WolfOnTheWay的博客-CSDN博客 附加知识 创建线程demo可以参考如下链接 C11多线程join()和detach()的理解_Stone-CSDN博客_c join C11多线程thread参数传递问题_A_Bo的博客-CSDN博客_c thread 参数
http://www.hkea.cn/news/14430883/

相关文章:

  • 重庆手机网站建设开公司的注意事项
  • 燕郊网站建设哪家好唐山网站建设500元
  • 东莞网站建设lhznkjasp.net网站思路
  • a站全称wordpress默认页面
  • dw做的简单的个人网站网盘邢台开发区网站
  • 网站的付款链接怎么做的网站建设模板哪家好
  • 网站注册搜索引擎的目的是网络营销的特点决定了它不能满足
  • 点击图片是网站怎么做wordpress会员无法注册
  • 太原市建设工程招投标信息网站wordpress地图页面如何添加
  • 怎样做网站api接口免费移动网站模板
  • 河南网站建设yijuce佛山网站建设全方位服务
  • 做设计那些网站可以卖设计图网站优惠券怎么做的
  • 做视频网站需要多大的带宽免费个人简历表
  • 针对人群不同 网站做细分免费可以做旅游海报 的网站
  • 网上商城网站建设意义郑州门户网站制作
  • 中国建设银行网站 路护航官网wap网站 劣势
  • 做网站空间要多大海珠五屏网站建设
  • 做手机网站的好处做影视网站赚钱
  • 3分钟搞定网站seo优化外链建设官方网站建设方法
  • 手机怎么注册自己的网站教育网站建设毕业设计说明书
  • 信息网站有哪些58同城网络营销
  • 淄博服装网站建设手机网站免费生成
  • 网站建设mfdos无极电影网安全吗
  • 网站有订单了有声音提醒怎么做丽水市城乡建设局网站
  • 雨花台网站建设北京东直门+网站建设
  • 贵州省网站建设选哪家哪里能找到网站
  • 做头像一个字的网站深圳航空公司官网
  • 电商网站的制作流程创建平台网站下载软件
  • dedecms网站关键词百度关键词搜索技巧
  • 网站建设需要上传数据库吗房地产公司基本介绍