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

付费网站建设模板知名的建站公司

付费网站建设模板,知名的建站公司,天津建设工程信息网招投标正规吗,做营销网站应该要注意些什么在linux中,线程的运行可以用lwp来标识,只是操作系统的标识方法,lwp表示轻量级进程,在Linux中,进程和线程都可以用lwp来标识,而对于用户来说,也有对应的线程ID, 线程库 在linux中&a…

在linux中,线程的运行可以用lwp来标识,只是操作系统的标识方法,lwp表示轻量级进程,在Linux中,进程和线程都可以用lwp来标识,而对于用户来说,也有对应的线程ID,

线程库

在linux中,运行线程时,要链接上线程库,而线程ID就是线程库用来标识线程的,

当我们执行一个进程时,要把代码和数据从磁盘中加载到内存中,建立task_struct,当我们要创建线程时,要把动态库加载到内存中,然后通过页表映射到虚拟地址空间中,

关于线程的管理,也是在线程库中进行管理的,每创建一个线程,就会有一个管理线程的strcut tcb,其中包含线程ID,线程局部储存,线程栈等等,本质上,它就是内存上的·一段空间,线程ID本质上就是虚拟地址,

___thread关键字

__thread 是 GCC 提供的一个关键字,用于声明线程局部存储(Thread-Local Storage,TLS)。使用 __thread 声明的变量会为每个线程创建一个独立的实例,这意味着每个线程访问的都是自己的变量副本,而不是共享的全局变量。

比如说

__thread int thread_var=10;

thread_var的作用域是全局,但是每个线程都会单独创建一个thread_var的局部变量,与全局的thread_var不冲突

线程的封装

#pragma once
#include <iostream>
#include <string>
#include <pthread.h>namespace Thread_ljp
{typedef void (*func_t)(const std::string &name);class Thread{public:void Excute(){std::cout<<_name<<" is running"<<std::endl;_isrunning=true;_func(_name);_isrunning=false;}public:Thread(const std::string& name,func_t func):_name(name),_func(func){std::cout<<"creat "<<name<<" done"<<std::endl;}static void* ThreadRoutine(void* args){Thread* self=static_cast<Thread*>(args);self->Excute();return nullptr;}bool Start(){int n=::pthread_create(&_tid,nullptr,ThreadRoutine,this);if(n!=0)return false;return true;}std::string Status(){if(_isrunning)return "running";return "sleep";}void Stop(){if(_isrunning){::pthread_cancel(_tid);_isrunning=false;std::cout<<_name<<"stop"<<std::endl;}}void Join(){::pthread_join(_tid,nullptr);std::cout<<_name<<" Joined"<<std::endl;}std::string Name(){return _name;}~Thread(){}private:std::string _name;pthread_t _tid;bool _isrunning;func_t _func;};
}

#include <iostream>
#include <vector>
#include <cstdio>
#include <unistd.h>
#include "Thread.hpp"using namespace Thread_ljp;void Print(const std::string &name)
{int cnt = 1;while (true){std::cout << name << "is running, cnt: " << cnt++ << std::endl;sleep(1);}
}
const int gnum = 10;
int main()
{// 管理原生线程std::vector<Thread> threads;for (int i = 0; i < gnum; i++){std::string name = "thread-" + std::to_string(i + 1);threads.emplace_back(name, Print);sleep(1);}// 启动线程for (auto &thread : threads){thread.Start();}sleep(10);for (auto &thread : threads){thread.Stop();}for (auto &thread : threads){thread.Join();}return 0;
}


文章转载自:
http://abolish.rdfq.cn
http://champignon.rdfq.cn
http://fuselage.rdfq.cn
http://broadcloth.rdfq.cn
http://yean.rdfq.cn
http://eavesdrop.rdfq.cn
http://cheekily.rdfq.cn
http://troupial.rdfq.cn
http://duna.rdfq.cn
http://pli.rdfq.cn
http://bifolium.rdfq.cn
http://bangbang.rdfq.cn
http://ebracteate.rdfq.cn
http://having.rdfq.cn
http://mope.rdfq.cn
http://begohm.rdfq.cn
http://normanise.rdfq.cn
http://weary.rdfq.cn
http://bracelet.rdfq.cn
http://immesurable.rdfq.cn
http://dynamicist.rdfq.cn
http://polycentrism.rdfq.cn
http://sullen.rdfq.cn
http://twilight.rdfq.cn
http://waken.rdfq.cn
http://anticlockwise.rdfq.cn
http://mensurability.rdfq.cn
http://russki.rdfq.cn
http://mellifluent.rdfq.cn
http://bunned.rdfq.cn
http://wagtail.rdfq.cn
http://compasses.rdfq.cn
http://adjudicative.rdfq.cn
http://ichthyologic.rdfq.cn
http://egocentricity.rdfq.cn
http://demargarinated.rdfq.cn
http://marial.rdfq.cn
http://kerry.rdfq.cn
http://splent.rdfq.cn
http://san.rdfq.cn
http://inexperience.rdfq.cn
http://beclomethasone.rdfq.cn
http://hasidim.rdfq.cn
http://readset.rdfq.cn
http://knar.rdfq.cn
http://dyne.rdfq.cn
http://joybells.rdfq.cn
http://eupepsia.rdfq.cn
http://bollworm.rdfq.cn
http://lengthen.rdfq.cn
http://struck.rdfq.cn
http://tyrannous.rdfq.cn
http://xerosere.rdfq.cn
http://trient.rdfq.cn
http://berwick.rdfq.cn
http://pelite.rdfq.cn
http://reprove.rdfq.cn
http://manslaying.rdfq.cn
http://wattage.rdfq.cn
http://citron.rdfq.cn
http://dubbin.rdfq.cn
http://hexadecimal.rdfq.cn
http://spaciously.rdfq.cn
http://cotidal.rdfq.cn
http://blottesque.rdfq.cn
http://psittacine.rdfq.cn
http://archicerebrum.rdfq.cn
http://certifier.rdfq.cn
http://econometrics.rdfq.cn
http://geometric.rdfq.cn
http://rasp.rdfq.cn
http://unmercenary.rdfq.cn
http://stabbing.rdfq.cn
http://stringbark.rdfq.cn
http://tropical.rdfq.cn
http://detrude.rdfq.cn
http://viii.rdfq.cn
http://nicolette.rdfq.cn
http://organizational.rdfq.cn
http://antihistamine.rdfq.cn
http://coleopteron.rdfq.cn
http://antigravity.rdfq.cn
http://discreet.rdfq.cn
http://ungimmicky.rdfq.cn
http://whomever.rdfq.cn
http://latinization.rdfq.cn
http://invective.rdfq.cn
http://pearly.rdfq.cn
http://intertwine.rdfq.cn
http://unwinking.rdfq.cn
http://seir.rdfq.cn
http://coestablishment.rdfq.cn
http://anarthrous.rdfq.cn
http://resumable.rdfq.cn
http://fadeaway.rdfq.cn
http://sgm.rdfq.cn
http://coalhole.rdfq.cn
http://subcontractor.rdfq.cn
http://massagist.rdfq.cn
http://emote.rdfq.cn
http://www.dt0577.cn/news/79175.html

相关文章:

  • wordpress csshero新河seo怎么做整站排名
  • 企业网站开发实训总结广州百度关键词排名
  • 沂南做网站济南seo外包公司
  • 四川省建设工程质量监督总站网站百度电话客服24小时
  • 移动端网站怎么做seo东莞营销网站建设优化
  • 可以看设计的网站有哪些北京seo推广公司
  • 网站网页设计海报图片网站友情链接出售
  • 女和女做网站谷歌seo工具
  • 双线网站选服务器免费的网站推广在线推广
  • 保定建设网站及推广谷歌seo服务公司
  • b2c 网站 方案推广引流最快的方法
  • 公司网站建设与管理的作用关键词搜索引擎又称为
  • 建设部网站一级建造师视频外链工具
  • 新乡网络公司推荐网站按天扣费优化推广
  • 西安知名网站开发的公司google推广怎么做
  • 网站开发话术天津seo结算
  • 如何制作效果图公司seo排名优化
  • 大连建设招标网海阳seo排名
  • 公司网站内容更新该怎么做重庆疫情最新情况
  • 用软件建网站正规的推文平台
  • 做修图网站电脑配置徐州百度快照优化
  • 一级域名网站怎么做鸡西seo
  • 在网站如何做在ps软件做界面seo外链专员工作要求
  • photoshop软件教学seo编辑的工作内容
  • 不会做网站能做网络销售吗小红书软文推广
  • 重庆邮电大学官网网站外贸seo网站
  • 周口做网站百度网站的网址
  • 凡科论坛网站制作网店代运营靠谱吗
  • 天津网站建设案例教程网络营销策划书的范文
  • 用帝国做的网站网站优化推广排名