怎样申请一个免费的网站空间易语言做购物网站

pingmian/2025/10/12 8:34:59/文章来源:
怎样申请一个免费的网站空间,易语言做购物网站,佛山专业做网站的公司,吾爱源码网#x1f4bb;文章目录 #x1f4c4;前言#x1f33a;linux线程基础线程的概念线程的优缺点线程与进程的区别 线程的创建 #x1f33b;linux线程冲突概念互斥锁函数介绍加锁的缺点 #x1f4d3;总结 #x1f4c4;前言 无论你是否为程序员#xff0c;相信多线程这个词汇应… 文章目录 前言linux线程基础线程的概念线程的优缺点线程与进程的区别 线程的创建 linux线程冲突概念互斥锁函数介绍加锁的缺点 总结 前言 无论你是否为程序员相信多线程这个词汇应该都有所耳闻像是在某个优化很差的游戏中听闻这游戏甚至是单线程的如果你对多线程感兴趣不妨点进本文来学习多线程编程即使没有深厚的C/C编程基础你也能到本文学习到如何编写多线程程序。 linux线程基础 线程的概念 线程指的是系统中的执行路径每个线程都线程系统中的一切进程都至少有一个线程它们共享同一个进程. 其实在linux中实际并没有真正的线程线程通常被称为轻量级进程LWP这是因为在linux的实现中线程和进程并没有什么本质的区别只是线程被设计得更加轻量以便更高效实现并发执行。 线程pcbtask_struc - --------------------------- | | 内核映射区域 || | | --------------------------- | | 栈 || -------------------task_struc | | |-------- | | 共享库 || | | | |-------- | -------------------| | 堆 |task_struc | 指向同一地址空间 --------------------------- |------------------- | 数据段 || | | --------------------------- | | 未初始化数据区 || -------------------task_struc | | 已初始化数据区 |-------- | -------------------| | | | 代码段 |-------- - -------------------线程的优缺点 优点 共享资源在同一线程的线程共享着大部分内存空间如代码段、数据段、文件描述符、堆、共享内存区等。这使得线程间通信非常地高效无需IPC机制开销。独立调度虽然线程中大部分地址空间都与主线程共享但线程也有自己的一部分数据如栈与寄存器状态这使得他们可以独立于其他线程运行。响应性在多线程程序中一个进程的阻塞不会影响到其他进程。资源利用率多线程可以提高在多核处理器上运行的效率实现并行执行。 缺点 编程困难因为多线程需要考虑到临界区、互斥、同步等问题所以对程序员的代码能力要求较高。同步复杂性多线程的资源共享需要谨慎处理否则会出现数据二义性问题。调试困难: 多线程调试一直都是令人头疼的问题因为bug可能会难以复现并且不是所有调试工具都支持多线程调试。健壮性如果任意一个线程触发了异常则整个程序都会终止。 线程与进程的区别 定义进程是资源分配的最小单位线程则是cpu调度执行的最小单位。资源共享进程之间资源独立同一进程内的线程共享进程资源。创建开销线程的创建和切换开销都小于进程因为线程之间资源共享。 线程的创建 函数接口介绍头文件pthread.h 创建线程 // 创建线程 int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);// pthread_t 是 POSIX 线程Pthreads库中定义的一个数据类型用于唯一标识一个线程参数 thread: 线程attr: 指定线程属性的指针可设为NULLstart_routine:线程开始执行的函数arg: start_routine 函数的参数 回收线程 // 等待线程结束并回收线程的资源防止类似“僵尸进程”的情况 int pthread_join(pthread_t thread, void** retval);参数 thread用于回收的线程id;retval用于存储线程的返回值。 退出线程 // 用于终止当前的线程因为exit会终止整个进程所以有了这个函数 void pthread_exit(void* retval);参数 retval退出线程时返回的值 分离线程 // 如果觉得join操作是一种负担的时候可以使用pthread_detach // 用于分离线程当线程结束时自动回收线程资源。 int pthread_detach(pthread_t thread);参数 thread:分离的线程id 介绍完了函数接口就到实践的时间啦。 使用函数 #include pthread.h #include iostreamvoid *thread_func(void *arg) {// 获取当前线程的tidstd::cout Thread (char *)arg id: gettid() started std::endl;int cnt 10;while (cnt 0){std::cout Thread (char *)arg id: gettid() is running, cnt cnt std::endl;cnt--;sleep(1);}// 子线程退出pthread_exit(nullptr); // 可有可无 }void *func_test(void* args) {printf(I LOVE LINUX\n);pthread_detach(pthread_self()); // 使用pthread_self()可以使子线程自己分离。return nullptr; }int main() {pthread_t thread, thread2;pthread_create(thread, nullptr, thread_func, (void *)-1);pthread_create(thread2, nullptr, func_test, nullptr);// 主线程等待子线程结束pthread_join(thread, NULL); // 回收线程return 0; }linux线程冲突 概念 多线程的高效率也是存在着代价的当多个线程同时访问一份资源时就会发生线程冲突(数据二义性)我们一般将这些多个线程都要访问的资源称为临界区。 要探讨数据二义性问题就得从汇编代码开始讲解 ; 例如一个简单的操作看似只做了一个操作但在汇编中却并不是这样。MOV EAX, [x] ; 将x的值加载到EAX寄存器 INC EAX ; 将EAX寄存器的值增加1 MOV [x], EAX ; 将修改后的值存回内存位置x; 多个线程同时访问这个资源x当线程1在将x放入寄存器EAX时线程2可能就已经将x并改变了内存的数值 ; 线程1将寄存器的值后又放回了x的内存。建议使用vs2022 进行反汇编调试来观看现象。线程冲突演示 #include pthread.h #include iostreamint x 0;void *func(void *args) {for (int i 0; i 100000000; i) //数值越大冲突概率越大x;pthread_exit(nullptr); }int main() {// 线程冲突演示pthread_t pid1, pid2;pthread_create(pid1, nullptr, func, nullptr);pthread_create(pid2, nullptr, func, nullptr);pthread_join(pid1, nullptr); //回收线程pthread_join(pid2, nullptr);cout x x endl;return 0; } // 结果 // x 154698688解决方案 为了解决这种情况就得当线程访问临界区资源时限制为一个线程访问也就是说需要给线程加锁。 互斥锁函数介绍 创建锁 // 初始化锁 pthread_mutex_t 用于声明互斥量mutex对象。// 静态加锁 (全局变量或静态进行初始化) pthread_mutex_t mutex PTHREAD_MUTEX_INITIALIZER;// 动态初始化 pthread_mutex_t mutex; pthread_mutex_init(mutex, NULL);线程加锁 // 给线程加锁 int pthread_mutex_lock(pthread_mutex_t *mutex);参数 mutex指向互斥锁对象 互斥锁解锁 int pthread_mutex_unlock(pthread_mutex_t *mutex);参数 mutex指向需要解锁的互斥锁对象的指针。 注意加锁操作本身时原子性的所以不用担心锁的二义性。 互斥锁的使用 int x 0; // 初始化锁对象 pthread_mutex_t mutex PTHREAD_MUTEX_INITIALIZER;void *func(void *args) {for (int i 0; i 100000000; i){pthread_mutex_lock(mutex); //加锁x;pthread_mutex_unlock(mutex); //解锁}pthread_exit(nullptr); }int main() {// 线程冲突演示pthread_t pid1, pid2;pthread_create(pid1, nullptr, func, nullptr);pthread_create(pid2, nullptr, func, nullptr);pthread_join(pid1, nullptr);pthread_join(pid2, nullptr);cout x x endl;return 0; }加锁的缺点 如果我们尝试运行程序会发现加锁后的运行速度明显慢了不少。锁的使用会增加性能的开销而且线程可能会变成串行执行为了避免多余的性能开销每次使用锁都应该避免将非临界区的资源加锁。 在一些特殊的情况下可能会 死锁演示 pthread_mutex_t mtx PTHREAD_MUTEX_INITIALIZER;void *func(void *args) {int* cnt (int*)args;if(*cnt 0) return nullptr;pthread_mutex_lock(mtx); // 第二次递归时等待着线程解锁std::cout func() std::endl; --(*cnt);func(args); // 递归进入下一层但锁还没解锁。pthread_mutex_unlock(mtx); // 程序永远走不到这里。return nullptr; }int main() {// 线程冲突演示pthread_t pid;int* cnt new int(10);pthread_create(pid, nullptr, func, (void*)cnt);pthread_join(pid, nullptr);return 0; }总结 多线程编程优点缺点资源共享线程间共享进程资源如代码段、数据段、文件描述符等使得线程间通信非常高效无需通过IPC机制开销。多线程的资源共享需要通过同步机制如互斥锁来管理否则可能导致数据不一致或竞争条件的问题。独立调度线程可以独立于其他线程运行拥有自己的执行路径。这增加了应用程序的响应性和处理效率。线程调度引入了上下文切换的开销尤其是在高度竞争的环境中可能降低整体性能。效率提升在多核处理器上多线程能够利用额外的核心执行更多的任务提高了程序的执行效率和资源利用率。编写高效的多线程程序需要深入理解并发、同步等概念增加了开发的复杂度。 多线程编程是一把双刃剑使用多线程能够显著提升程序的性能但它也为程序带来了许多潜在的风险在处理器核心数越来越多的当今学习多线程也变得越发重要希望本文对你的学习有所帮助。 博客主页主页 我的专栏C 我的githubgithub

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/88376.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站正在建设中 模板 下载360建筑网忘记登入密码了怎么办

前言 环境介绍: 1.编译环境 Ubuntu 18.04.5 LTS 2.SDK rk356x_linux 3.单板 迅为itop-3568开发板 自制底板 一、查看硬盘 插上硬盘上电,进入系统后通过命令lspci查看nvme硬盘识别情况 [rootRK356X:/]# lspci -k 21:00.0 Class 0108: 1e4b:1202…

做淘宝差不多的网站吗外贸网络推广平台

据小米方面介绍,小米手机认证空间帐号自2013年5月21日开通以来,框架,8mm加厚钢化玻璃,15mm防火板材质机壳3、在QQ空间发表日志的之后为什么总是显示“服务器繁忙”,发表不了日志?这个难题在我家电脑下终于存…

做网站的关键词怎么判断好不好wordpress中文显示成问号

面向对象 1.初识对象1.1理解使用对象完成数据组织的思路 2.成员方法2.1类的定义和使用语法2.2成员方法的使用 3.类和对象4.构造方法4.1使用构造方法向成员变量赋值 5.其他内置方法5.1__str__字符串方法5.2__lt__小于符号比较方法5.3__le__小于等于比较符号5.4__eq__比较运算符实…

沈阳城市建设学院官网网站医院网站建设思路

1.OSI 七层模型? OSI 七层模型:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层 TCP/IP 五层模型:应用层、传输层、网络层、链路层、物理层 应用层 应用层是由网络应用程序使用的,是离用户最近的一层 应用层通过…

利用高权重网站做关键词网站内容策略

一篇博客读懂设计模式之---单例模式 一。 单例模式 单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式有几个好处: 1、某些类创建比较频繁&…

重庆名威建设工程咨询有限公司网站做网站大概价格

目录 专栏导读 1 GUI 编程概述 1.1 为什么需要GUI? 1.2 常见的GUI编程工具和库 1.3 GUI应用程序的组成和架构 2 使用Tkinter 库 进行GUI编程 2.1 使用Tkinter库进行GUI编程的基本流程 2.2 使用Tkinter库进行GUI编程 2.2.1 导入Tkinter库 2.2.2 添加标签和…

设计师接私单做网站微信公众号推广链接

概述 Zephyr OS 是一个占用空间小的内核,用于资源受限的嵌入式系统:从简单的嵌入式环境传感器、LED 可穿戴设备到复杂的嵌入式控制器、智能手表和物联网无线应用。 Zephyr 内核支持多种架构,包括: ARCv2 (EM and HS) and ARCv3…

湖南产品网络推广业务seo是什么意思蜘蛛屯

launchMode在多个Activity跳转的过程中扮演着重要的角色,它可以决定是否生成新的Activity实例,是否重用已存在的Activity实例,是否和其他Activity实例公用一个task里。这里简单介绍一下task的概念,task是一个具有栈结构的对象&…

怎样做_网站做seo深圳官方宣布解封时间

前言:我的最终目的是为了在QQ上集成一个AI机器人,因此在这里先实现一个简单的集成 先上效果图 总体还是很简单的,我在调用websock获取回复内容的基础上另外集成了一个事件总线,让我们在调用获取消息的时候能够更加方便快捷 工具代…

做外贸网络推广网站做国外贸易的网站

技巧:最后得到的是终结符组成的闭包 例题: 文法G[S]: S-->AB A-->aAb|ab B-->Bc|,求对应的语言 ①S-->(aAb|ab)(Bc|) ②我们可以观察到,无论A-->aAb还是A-->ab,都一定会同时出现ab,…

德阳高端网站建设电子商务和网站建设论文

学习上一篇文章之后,确定好JDK和环境变量都成功之后,我们来编写我们第一个java程序命名为HelloWorld.java。上一篇文章链接:JDK下载与环境变量的安装桌面上右击,新建一个文本文档用记事本打开文本文档编写如上图代码,注…

网站建设与管理专业实训室无锡网站制作推荐

Vue3i18n多语言动态国际化设置 前言一、 i18n 介绍二、插件安装三、i18n配置3.1 创建i18n对应文件夹/文件3.2 en-US.js3.3 zh-CN.js3.4 index.js 四、 mian.js 引入 i18n配置文件五、 组件内使用六、使用效果 前言 继续【如何给自己的网站添加中英文切换】一文之后&#xff0c…

织梦网站新闻列表调用商城手机网站制作

复原IP 地址 力扣原题链接 问题描述 有效 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 ‘.’ 分隔。 例如:“0.1.2.201” 和 “192.168.1.1” 是有效 IP 地址&#xff0c…

湖南建网站公司外贸营销网站建设工程

参考博客的解决方案: https://www.jianshu.com/p/148cf8c9571d 思路:通过活动监视器找到Microsoft word的程序启动地址,在前往-前往文件夹中输入地址,到程序所在的文件夹,双击启动一个新的word程序,将当前…

怎么自己做微网站吗做化妆品注册和注册的网站吗

测试覆盖率通常被用来衡量测试的充分性和完整性,从广义的角度来讲,测试覆盖率主要分为两大类,一类是面向项目的需求覆盖率,另一类是更偏向技术的代码覆盖率。 需求覆盖率 需求覆盖率是指测试对需求的覆盖程度,通常的做…

北京保障房建设网站网站做下载word

文章目录1. 题目信息2. 思路3. 代码1. 题目信息 合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 示例:输入: [1->4->5,1->3->4,2->6 ] 输出: 1->1->2->3->4->4->5->6来源:力扣(…

海尔建设网站的目的企业网站优化培训

前言 (1)我能够正常访问GitHub,但是每次将代码提交到GitHub常常显示网络超时。这是因为提交是走的国内的网络,对GitHub访问会被进行限速。 (2)为了让小乌龟也拥有魔法,我们可以使用代理工具。注…

国外网站赏析android 不装插件 wordpress

requests.get 是 Python 中 requests 库的一个方法,用于发送 GET 请求。它有许多参数可以配置,以下是一些常见的参数: url:指定要发送 GET 请求的 URL。params:可选参数,用于向请求添加 URL 参数。data&…

网站与平台的开发区别网站备案 接电话

目录 题目解题思路具体代码题目 题目链接剑指offer:二维数组中的查找题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数&a…

网站建设 请示网站弹出广告gif出处

基于乌燕鸥算法优化的BP神经网络(预测应用) - 附代码 文章目录 基于乌燕鸥算法优化的BP神经网络(预测应用) - 附代码1.数据介绍2.乌燕鸥优化BP神经网络2.1 BP神经网络参数设置2.2 乌燕鸥算法应用 4.测试结果:5.Matlab代…