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

上海网站建设在哪里如何判断网站数据库类型

上海网站建设在哪里,如何判断网站数据库类型,中国城乡建设厅网站首页,个人网站要有什么目录 线程等待 线程退出 线程的优缺点 线程独占和共享的数据 我们说Linux是用进程模拟的线程#xff0c;所以Linux中只有轻量级进程的概念#xff0c;但是#xff0c;用户是只认线程的#xff0c;所以我们有一个叫原生线程库的东西#xff0c;它就负责把轻量级进程的系…目录 线程等待 线程退出 线程的优缺点 线程独占和共享的数据 我们说Linux是用进程模拟的线程所以Linux中只有轻量级进程的概念但是用户是只认线程的所以我们有一个叫原生线程库的东西它就负责把轻量级进程的系统调用进行封装转成线程相关的接口提供给用户。 为什么叫原生呢就是说只要你装Linux系统就必须装这个库就是默认装好的库。 有关线程的接口在3号手册就证明它们不是系统调用因为系统调用在2号手册。当然也有创建轻量级进程的系统调用 man clone它是在二号手册 我们可以说其实pthread_create其实就是封装了这个系统调用 pthread_create创建新线程时第一个参数是输出型参数会带回来一个id值那么这个值和LWP之间是什么关系呢我们可以断定的认为它们是一对一的关系用户层使用id值内核只用LWP我们可以打印一下这个id值我们可以把id值改成十六进制 这个值很大其实它就是一个地址位于栈和堆之间的共享区的一个地址我们后面会有讲解 这是主进程获取新线程的id值那么一个线程如何获取它自己的id值呢 man pthread_self 这个函数就是谁调用它就获取谁的id值 我们从主线程和新线程中获取的新线程的id肯定是一样的 新线程和主线程谁先运行呢这个是不确定的是由调度器来决定的 pthread_create的第四个参数是给新线程要执行的函数传的参数是void*类型我们之前都传的是nullptr我们可以传一个名字 新主线程大部分资源是共享的比如地址空间是共享的我如果定义一个全局变量那么新主进程都可以看见 我们可以看到新线程对于全局数据的修改主线程也是可以看到的 线程等待 主线程如果退出的话不管新线程是否退出整个进程都会退出意味着资源会释放所有线程都会退出。所以我们往往要求主线程是最后退出的 并且线程也是要被等待的否则会像进程那样发生内存泄漏的问题线程等待就要用到下面这个接口 man pthread_join 这个接口也是默认是阻塞式等待的 第一个参数是要等待哪个线程 第二个参数是等待到了什么东西因为新线程的返回值是void*类型的所以要用void*类型去接收它是一个输出型参数所以我要传的参数是void*的指针所以是void** 我们简单来用一下 void *newthreadrun(void *args) {char *str (char *)args;int cnt 5;while (cnt--){cout str is running endl;sleep(1);}return (void *)12345; } int main() {pthread_t tid;pthread_create(tid, nullptr, newthreadrun, (void *)pthread-1);void *ret nullptr;int n pthread_join(tid, ret);if (n 0){cout return val is: (long long)ret endl;//指针64位下是8个字节强转成long long不会损失精度}return 0; }如果说线程出异常比如除零那么整个进程都会退出这是因为信号是给进程发送的一个线程出了问题那么就是这个进程出了问题整个进程都要被杀死。 所以我们普遍认为多进程的代码往往健壮性不好当然这是普遍来说的如果一个多线程的代码写的很好健壮性也是不成问题的 所以pthread_join是不考虑新线程的异常情况的因为只要异常整个进程都退出了根本不存在等待的问题它只考虑代码运行完结果是否正确 线程退出 如果对一个线程使用exit会怎样呢它会使整个进程退出因为exit本身就是用来终止进程的而不是用来终止线程的 所以我们有一个pthread_exit用来终止线程 man pthread_exit 参数就是像return后面的数据一样就是想返回什么 上面这种方法是新线程主动退出那如果是主线程想让新线程退出该怎么办呢可以用下面的接口 man pthread_cancel 这里如果取消掉新线程并且等待新线程那么n0ret-1这里的-1 其实就是一个宏表示线程被取消了 所以进程退出有三种方式returnpthread_exit和pthread_cancel 线程的优缺点 优点 1.创建一个新线程的代价比创建一个新进程小很多因为创建一个线程只需要创建一个PCB而进程需要地址空间页表文件描述表等等 2.与进程之间的切换相比线程之间的切换需要操作系统做的工作要少很多 要解释这个我们就不得不提到CPU中的cache缓存了CPU要执行某行代码不是只把这行代码放到CPU中而是要把执行的代码及周围的代码都放到cache中这样CPU要执行的下一条代码就很有可能已经在缓存中了对于不同的线程切换来说这是有几率命中的但是对于不同的进程切换肯定要换掉缓存中的代码 我们可以用lscpu看一下云服务器的CPU配置 3.IO操作基本大部分时间都是在等所以我们可以趁着等的时间多创建几个线程执行其他的任务 缺点 1.一般计算密集型的进程的线程数量和CPU的数量相同如果线程数量太多也会增加调度的开销 2.健壮性降低线程之间缺乏保护就容易导致产生不良影响 3.编程难度提高编写与调试一个多线程程序比单线程程序困难得多 线程独占和共享的数据 线程独占 1.线程的硬件上下文CPU寄存器内部的值从调度角度而言 2.线程的独立栈结构从常规运行的角度 3.线程的ID 4.信号屏蔽字 5.调度优先级 6.errno变量 线程共享 1.函数和全局变量 2.文件描述符表 3.各种信号的处理方式 4.当前工作目录 5.用户id和组id这些id标识了线程的拥有者和所属组 我们如果想创建多个线程可以这样 void *newthreadrun(void *args) {char *str (char *)args;int cnt5;while(cnt--){cout str is running endl;sleep(1);}delete[] str;//new[]的空间要delete[]return nullptr; } int main() {pthread_t tid;vectorpthread_tf;for (int i 1; i 5; i){char*buffernew char[64];//这里必须new否则五个线程看到的是一块空间snprintf(buffer, 64, pthread-%d, i);//不能用sizeof因为sizeof(buffer)8pthread_create(tid, nullptr, newthreadrun, buffer);f.push_back(tid);}for(auto e:f){pthread_join(e,nullptr);}return 0; } 我们也可以将线程和C中的类和对象联系应用起来 templateclass T T add(T x, T y) {return x y; } template class T class threaddata { public:threaddata(const char *str, functionT(T, T) task): _name(str), _task(task){delete[] str;}T Dotask(T x, T y){return _task(x, y);}string _name;functionT(T, T) _task;T _result; };void *newthreadrun(void *args) {threaddataint *p (threaddataint *)args;p-_result p-Dotask(10, 20);cout p-_name get result: p-_result endl;delete p;return nullptr; }int main() {pthread_t tid;vectorpthread_t f;for (int i 1; i 5; i){char *buffer new char[64];snprintf(buffer, 64, pthread-%d, i);threaddataint *ptd new threaddataint(buffer, addint);pthread_create(tid, nullptr, newthreadrun, ptd);f.push_back(tid);}for (auto e : f){pthread_join(e, nullptr);}return 0; }
文章转载自:
http://www.morning.mnpdy.cn.gov.cn.mnpdy.cn
http://www.morning.ptmsk.cn.gov.cn.ptmsk.cn
http://www.morning.rqmqr.cn.gov.cn.rqmqr.cn
http://www.morning.lywys.cn.gov.cn.lywys.cn
http://www.morning.xxhc.cn.gov.cn.xxhc.cn
http://www.morning.wclxm.cn.gov.cn.wclxm.cn
http://www.morning.lsfrc.cn.gov.cn.lsfrc.cn
http://www.morning.thwhn.cn.gov.cn.thwhn.cn
http://www.morning.dfkmz.cn.gov.cn.dfkmz.cn
http://www.morning.mjxgs.cn.gov.cn.mjxgs.cn
http://www.morning.nydtt.cn.gov.cn.nydtt.cn
http://www.morning.yfphk.cn.gov.cn.yfphk.cn
http://www.morning.fycjx.cn.gov.cn.fycjx.cn
http://www.morning.nzlsm.cn.gov.cn.nzlsm.cn
http://www.morning.swkzk.cn.gov.cn.swkzk.cn
http://www.morning.kspfq.cn.gov.cn.kspfq.cn
http://www.morning.hbkkc.cn.gov.cn.hbkkc.cn
http://www.morning.cryb.cn.gov.cn.cryb.cn
http://www.morning.pyxwn.cn.gov.cn.pyxwn.cn
http://www.morning.plqhb.cn.gov.cn.plqhb.cn
http://www.morning.gsqw.cn.gov.cn.gsqw.cn
http://www.morning.fldsb.cn.gov.cn.fldsb.cn
http://www.morning.gmztd.cn.gov.cn.gmztd.cn
http://www.morning.hsrpr.cn.gov.cn.hsrpr.cn
http://www.morning.dcpbk.cn.gov.cn.dcpbk.cn
http://www.morning.fbccx.cn.gov.cn.fbccx.cn
http://www.morning.qnxtz.cn.gov.cn.qnxtz.cn
http://www.morning.3ox8hs.cn.gov.cn.3ox8hs.cn
http://www.morning.qkqhr.cn.gov.cn.qkqhr.cn
http://www.morning.qpqwb.cn.gov.cn.qpqwb.cn
http://www.morning.ffmx.cn.gov.cn.ffmx.cn
http://www.morning.btpzn.cn.gov.cn.btpzn.cn
http://www.morning.gjtdp.cn.gov.cn.gjtdp.cn
http://www.morning.wnnts.cn.gov.cn.wnnts.cn
http://www.morning.bsjpd.cn.gov.cn.bsjpd.cn
http://www.morning.cpctr.cn.gov.cn.cpctr.cn
http://www.morning.qggm.cn.gov.cn.qggm.cn
http://www.morning.rdmn.cn.gov.cn.rdmn.cn
http://www.morning.bysey.com.gov.cn.bysey.com
http://www.morning.bpds.cn.gov.cn.bpds.cn
http://www.morning.lmmyl.cn.gov.cn.lmmyl.cn
http://www.morning.kndt.cn.gov.cn.kndt.cn
http://www.morning.krswn.cn.gov.cn.krswn.cn
http://www.morning.jtfcd.cn.gov.cn.jtfcd.cn
http://www.morning.dktyc.cn.gov.cn.dktyc.cn
http://www.morning.qkwxp.cn.gov.cn.qkwxp.cn
http://www.morning.npbnc.cn.gov.cn.npbnc.cn
http://www.morning.jcxqc.cn.gov.cn.jcxqc.cn
http://www.morning.fwjfh.cn.gov.cn.fwjfh.cn
http://www.morning.wklhn.cn.gov.cn.wklhn.cn
http://www.morning.bzjpn.cn.gov.cn.bzjpn.cn
http://www.morning.ykwqz.cn.gov.cn.ykwqz.cn
http://www.morning.nwynx.cn.gov.cn.nwynx.cn
http://www.morning.llgpk.cn.gov.cn.llgpk.cn
http://www.morning.c7510.cn.gov.cn.c7510.cn
http://www.morning.bybhj.cn.gov.cn.bybhj.cn
http://www.morning.wrtxk.cn.gov.cn.wrtxk.cn
http://www.morning.bqfpm.cn.gov.cn.bqfpm.cn
http://www.morning.pdwny.cn.gov.cn.pdwny.cn
http://www.morning.cwlxs.cn.gov.cn.cwlxs.cn
http://www.morning.jxfsm.cn.gov.cn.jxfsm.cn
http://www.morning.dtrz.cn.gov.cn.dtrz.cn
http://www.morning.dzgyr.cn.gov.cn.dzgyr.cn
http://www.morning.rzscb.cn.gov.cn.rzscb.cn
http://www.morning.qnksk.cn.gov.cn.qnksk.cn
http://www.morning.wgkz.cn.gov.cn.wgkz.cn
http://www.morning.lxkhx.cn.gov.cn.lxkhx.cn
http://www.morning.kfyqd.cn.gov.cn.kfyqd.cn
http://www.morning.xlclj.cn.gov.cn.xlclj.cn
http://www.morning.pcqdf.cn.gov.cn.pcqdf.cn
http://www.morning.nyzmm.cn.gov.cn.nyzmm.cn
http://www.morning.hsklc.cn.gov.cn.hsklc.cn
http://www.morning.wgkz.cn.gov.cn.wgkz.cn
http://www.morning.kllzy.com.gov.cn.kllzy.com
http://www.morning.ampingdu.com.gov.cn.ampingdu.com
http://www.morning.xgjhy.cn.gov.cn.xgjhy.cn
http://www.morning.ggtkk.cn.gov.cn.ggtkk.cn
http://www.morning.lhxdq.cn.gov.cn.lhxdq.cn
http://www.morning.burpgr.cn.gov.cn.burpgr.cn
http://www.morning.bxbkq.cn.gov.cn.bxbkq.cn
http://www.tj-hxxt.cn/news/281714.html

相关文章:

  • 网站建设业务饱和了吗承德建设网站公司
  • 网页微信版官网登录不了网站优化的文章
  • 网站建设的部署与发布怎样提高网站的打开速度
  • 嵌入式网站开发培训h5网页网站制作代码
  • html网页课程设计报告广州网站建设专注乐云seo
  • 荆州网站制作公司wordpress 两个网站吗
  • 城市建设网站设计君哥摄影设计
  • 个人网站设计怎么做个人主页设计规划文案
  • 为什么做免费视频网站建设项目自主验收网站
  • 网站建设制作费用安徽省城乡建设网站
  • 订阅号可以做微网站长沙寸金网络营销网址
  • 哪里办网站不用备案slim编辑器Wordpress
  • 企业网站模板建立流程广州企业网站建设公司哪家好
  • 网站备案 营业执照副本企业网站开发模型图
  • 福建省建设厅网站投诉临沂网站公众号建设
  • ui设计哪家培训班好seo页面链接优化
  • 专利减缓在哪个网站上做中国建设网官网下载
  • 万江专业网站快速排名巨量引擎广告投放
  • 灌南网站建设ppt设计灵感
  • 极速网站建设定制费用wordpress 中文链接
  • 昆明网站的建设金湖网站推广
  • 网站策划任职要求阿里云盘资源搜索引擎
  • .net做中英文网站徐州制作公司网站
  • 湖南网站制作方案建站公司 长沙和西安
  • 文山建设局网站网站建设心得体会500字
  • 模板网站很牛牛客网官网
  • 学校网站制作软件企业网站建设有什么好
  • 无锡开发网站建设wordpress自定义字段框架
  • 嘉峪关市网站建设设计如何做好网站建设内容的策划
  • 安阳做网站公司企业网站建设计入什么科目