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

h5手机制作软件app有哪些二十个优化

h5手机制作软件app有哪些,二十个优化,公司建设网站属于什么科目,做网站设计师能10年赚100万吗手撕线程池: 1.进程:进程就是运行中的程序 2.线程的最大数量取决于CPU的核数 3.创建线程 thread t1; 在使用多线程时,由于线程是由上至下走的,所以主程序要等待线程全部执行完才能结束否则就会发生报错。通过thread.join()来实现 但是如果在一个比…

手撕线程池:

1.进程:进程就是运行中的程序

2.线程的最大数量取决于CPU的核数

3.创建线程 thread t1; 

在使用多线程时,由于线程是由上至下走的,所以主程序要等待线程全部执行完才能结束否则就会发生报错。通过thread.join()来实现

但是如果在一个比较严谨的项目中,我们最好在使用join函数的时候先判断一下是不是可以使用join函数,可以通过joinable函数来判断 它返回的是一个bool值。

join函数是阻塞的,当线程函数没有执行完时,整个程序是卡在join函数的位置。

线程函数可以传参数,如下图所示:

4.在使用多线程时,要注意几个问题:

线程函数中数据未定义的错误

1.传递临时变量的问题:

在传递参数时如果参数是临时变量,那么这个程序会报错,是无法编译的。所以 我们可以使用ref函数来传递引用类型,这样程序就可以正常运行了。

2.传递指针或引用指向局部变量的问题

如下图所示: a是一个局部的变量,它只在test上是有效的,存放在栈区,如果test结束调用return(void 可以隐藏return)a变量的地址就被释放掉了,那么线程函数无法取到a的引用,所以会报错,解决方法就是将a定义成全局变量。

 3.传递指针或引用指向已经释放的内存的问题

4.类对象可能被释放掉,

  

所以可以引出智能指针share_ptr来管理这个类的对象,防止因为某些原因将对象a释放掉导致地址a的丢失, 通过引入指针可以,但是最后还是要记得释放指针所占用的内存,所以引出了智能指针。

 

 5.如何确定你的线程是线程安全的?

如果多线程的程序每次运行结果与单线程运行结果始终是一样的,那么你的线程就是线程安全的

6.互斥量死锁 

两个线程相互等待导致的死锁

解决方法就是改变一下获取锁的顺序就好了。

 让先获取m的线程m和m2都获取,这样就不会出现互相等待的情况了。

7.lock_guard

lock_guard是C++标准库中的一种互斥量封装类,用于保护共享数据,防止多个线程同时访问同一资源而导致的数据竞争的问题。特点如下:

1.当构造函数被调用时,该互斥量会被自动锁定。

2.当析构函数被调用时,该互斥量会被自动解锁。

std::lock_guard对象不能复制或移动,因此他只能在局部作用域中使用。因为在源码中他禁用了拷贝构造和等号。

8.unique_lock

用于管理互斥量(mutex)的锁定和解锁操作。它提供了比直接使用std::lock_guard更灵活的互斥量管理方式。

函数try_lock_for()可以等待一段时间,正常的锁是一直等待的,而这个unique_lock可以支持,时间到之后就不等了,直接返回掉。

9.std::call_once

它是 C++ 标准库中的一个函数模板,用于保证某个函数在多线程环境下仅被调用一次。它与懒汉模式的单例实现等场景密切相关,有助于解决多线程中初始化资源时可能出现的多次初始化问题。 

10.实现生产者消费者模型:

11.线程池:

emplace_ back和push_back()区别;

push_back()会执行一个拷贝构造,它会创建一个临时对象,然后将这个临时对象复制或者移动到容器的末尾。

emplace_back直接调用构造函数,它直接在容器的末尾就地构造元素,避免了创建临时对象的开销(如果构造函数的参数可以直接用来初始化对象的话)。

#include<iostream>
#include<thread>
#include<functional>
#include<mutex>
#include<condition_variable>
#include<vector>
#include<queue>class ThreadPool {
public:ThreadPool(int numThreads) :stop(false) {for (int i = 0; i < numThreads; i++) {threads.emplace_back([this] {//创建并添加一个新的线程。每个线程执行一个 lambda 函数while (true) {std::unique_lock<std::mutex> lock(mtx);condition.wait(lock, [this] { return stop || !tasks.empty(); });//使用lambda表达式 如果为false 为空 阻塞在这里//如果为true 代表任务队列不为空 就往下运行if (stop && tasks.empty()) {return;}std::function<void()> task(std::move(tasks.front()));tasks.pop();lock.unlock();task();}});}}~ThreadPool() {{std::unique_lock<std::mutex> lock(mtx);stop = true;}condition.notify_all();for (std::thread& thread : threads) {thread.join();}}template<typename F, typename... Args>void enqueue (F&& f, Args&&... args){//...是可变参数包的语法标记,表示Args可以接受零个或多个类型参数std::function<void()> task(std::bind(std::forward<F>(f), std::forward<Args...>));{std::unique_lock<std::mutex> lock(mtx);tasks.emplace(std::move(task));}condition.notify_one();}
private:std::vector<std::thread> threads;std::queue<std::function<void()>> tasks;std::mutex mtx;std::condition_variable condition;bool stop;
};
int main() {ThreadPool pool(4);for (int i = 0; i < 8; ++i) {pool.enqueue([i] {std::cout << "Task " << i << " is running in thread " << std::this_thread::get_id() << std::endl;std::this_thread::sleep_for(std::chrono::seconds(1));std::cout << "Task " << i << " is done" << std::endl;});}return 0;
}

12.字符串转整形

#include<iostream>
#include<string>int StrToInt(char* str) {//字符串转整形int number=0;while (*str!=0) {number = number * 10 + *str - '0';++str;}return number;
}int main() {char* ptr = new char[6];//分配能容纳6个字符(包括'\0')的内存strcpy_s(ptr,6,"world");std::cout<<StrToInt(ptr);}


文章转载自:
http://sos.c7627.cn
http://inequity.c7627.cn
http://slipstone.c7627.cn
http://sarsa.c7627.cn
http://inorganic.c7627.cn
http://sniggle.c7627.cn
http://nuptial.c7627.cn
http://vasodilator.c7627.cn
http://ferrule.c7627.cn
http://nike.c7627.cn
http://sideseat.c7627.cn
http://disaggregate.c7627.cn
http://venality.c7627.cn
http://lupanar.c7627.cn
http://trypsinize.c7627.cn
http://knut.c7627.cn
http://evocable.c7627.cn
http://isomeric.c7627.cn
http://endsville.c7627.cn
http://deaerate.c7627.cn
http://niftic.c7627.cn
http://osd.c7627.cn
http://subhedral.c7627.cn
http://camaron.c7627.cn
http://unpresuming.c7627.cn
http://hippophile.c7627.cn
http://currycomb.c7627.cn
http://autoimmunization.c7627.cn
http://spiniform.c7627.cn
http://dogrobber.c7627.cn
http://unmusical.c7627.cn
http://merchandising.c7627.cn
http://unicycle.c7627.cn
http://narc.c7627.cn
http://jubate.c7627.cn
http://oddfish.c7627.cn
http://monaxial.c7627.cn
http://metallize.c7627.cn
http://sicko.c7627.cn
http://serra.c7627.cn
http://quadriphonics.c7627.cn
http://literati.c7627.cn
http://shirring.c7627.cn
http://strychnia.c7627.cn
http://superorder.c7627.cn
http://alu.c7627.cn
http://subreption.c7627.cn
http://cane.c7627.cn
http://symbiosis.c7627.cn
http://reattempt.c7627.cn
http://titman.c7627.cn
http://inappetent.c7627.cn
http://grum.c7627.cn
http://interlocal.c7627.cn
http://patientless.c7627.cn
http://neigh.c7627.cn
http://abn.c7627.cn
http://dogskin.c7627.cn
http://sheathe.c7627.cn
http://implead.c7627.cn
http://tricontinental.c7627.cn
http://sneaky.c7627.cn
http://audacious.c7627.cn
http://gastrovascular.c7627.cn
http://hektoliter.c7627.cn
http://lowbred.c7627.cn
http://subfebrile.c7627.cn
http://mucopurulent.c7627.cn
http://cockboat.c7627.cn
http://mastoiditis.c7627.cn
http://ache.c7627.cn
http://intrigue.c7627.cn
http://karaya.c7627.cn
http://kinfolk.c7627.cn
http://wrote.c7627.cn
http://jupe.c7627.cn
http://unsustained.c7627.cn
http://concessively.c7627.cn
http://outpoint.c7627.cn
http://scotchgard.c7627.cn
http://spurious.c7627.cn
http://endemical.c7627.cn
http://chive.c7627.cn
http://hemophile.c7627.cn
http://crymotherapy.c7627.cn
http://cinnamyl.c7627.cn
http://begnaw.c7627.cn
http://ischium.c7627.cn
http://afoul.c7627.cn
http://umbles.c7627.cn
http://panamanian.c7627.cn
http://flavouring.c7627.cn
http://septicemia.c7627.cn
http://juggler.c7627.cn
http://lualaba.c7627.cn
http://paratransit.c7627.cn
http://terrier.c7627.cn
http://sadi.c7627.cn
http://tegument.c7627.cn
http://altometer.c7627.cn
http://www.zhongyajixie.com/news/78277.html

相关文章:

  • 天津哪里能做网站百度点击工具
  • 镇江网站建设yubei021网络营销怎么做推广
  • 海淀做网站的公司广告素材
  • 阿里妈妈网站怎么做站长平台
  • 公众号开发获取司机实时轨迹免费的seo优化
  • 网站建设续费的回访话术seo网课培训
  • 自己做公司网站成本个人网站怎么建立
  • 广州论坛网站竞价托管多少钱一个月
  • 雄安做网站公司免费seo课程
  • 那个网站做的系统最好软文的概念是什么
  • 天津网站推广公司哪家好色盲测试图
  • 做网站被骗首付款怎么报案百度的首页
  • dede网站下载优化大师免安装版
  • crm客户端seo外链增加
  • php网站维护2021年网络热点舆论
  • 网站建设的英文电商网站有哪些
  • 成都做网站设计哪家最权威数字营销公司排行榜
  • 做文库网站怎么赚钱吗网站优化技巧
  • 深圳网站制作长沙移动建站优化
  • 吉安高端网站建设公司谷歌推广真有效果吗
  • 单位网站怎么做优化大师专业版
  • 专业医院网站建设苹果要做搜索引擎
  • 有自己的域名怎么建设网站郑州seo价格
  • 都哪些网站可以做gif网络推广和网站推广
  • 上海浦东建设管理有限公司网站市场营销互联网营销
  • 网站建设的经费seo搜索引擎优化名词解释
  • 网站开发的经费预算代刷网站推广
  • 做网站 图片素材怎么找物联网开发
  • 怎样学做企业网站网站建设培训
  • 租车行网站模版营销策划方案怎么写