专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-963-0016
微信咨询
|
联系我们
扫二维码关注公众号
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
位置:
网站建设
>
技术支持
> C语言线程和进程
C语言线程和进程
来源:网络整理 时间:2023/2/17 11:53:09 共
3657
浏览
当启动一个程序时,操作系统创建一个进程,并在该进程中执行程序。
一个进程包括一个或多个线程。每个线程又是一个局部进程,它以独立于其他局部进程的方式执行一个命令序列。
当进程启动时,它的主线程则成为活动线程。
这时,任何正在运行的线程都可以启动其他线程。
当进程终止时,
例如,通过在 main()函数中执行一个 return 语句或通过调用 exit()函数,
所有已开启但还未结束的线程都会被终止。
系统调度器为所有可运行的线程平均分配可用的 CPU 时间。
通常,调度器是抢占式的:它会中断正在执行的线程,给中央处理单元(CPU)留出可用的短暂时间,并将 CPU 分配给其他线程使用一段时间。
这种调度的结果是:即使是在单处理系统上,在用户面前运行的线程看上去像是在同时执行,实际上,只有在多处理器系统中,几个线程才可能真正地同时执行。
每一个进程在内存中都有自己的地址空间,并拥有独占的资源
,例如,打开的文件。一个进程中的所有线程都继承该进程的资源。最具有意义的是,在一个进程中的几个线程共享一个地址空间。这使得在一个进程中的任务切换比在不同进程间的任务切换要简单得多。
然而
,为了在不同线程间切换任务,每个线程也拥有自己的资源:包括栈存储器和 CPU 寄存器。
这些资源允许每个线程在不受其他线程干扰的条件下,处理自身的本地数据。此外,一个线程也可以具有线程专用的永久内存。
对于一个给定进程,由于它内部的所有线程均使用相同的地址空间,所以它们共享全局数据与静态数据。然而,这也意味着,同一个进程中的两个不同线程可以同时访问同一个内存单元。这种情况在 C 标准中被称为
数据竞争(data race)
,或者通常称之为
竞态条件(race condition)
。
为了防止在共享数据时出现冲突,当这些不同线程使用内存中相同位置时,程序员必须明确地同步这些不同线程的写操作或读写操作。
版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
相关主题:
网页设计框架图模板
网页的设计和制作
简约网页排版设计
网页设计站点创作步骤
网页仪表板设计
网页设计隐藏与显示.
Http协议是网页设计
新颖的网页设计主题
营养师网页设计
网页设计制作实验记录
·上一条:
C++ vector添加(增加)元素
|
·下一条:
C++异常处理(try catch throw)完全攻略
同类资讯
C++ vector添加(增加)元素
C语言创建线程thread_create()
C语言线程函数
C++ vector插入元素(数据)详解
C语言线程互斥和原子操作
C++ vector删除元素(数据)详解
C++11 shared_ptr(智能指针)详解
C++ deque使用、创建及初始化详解
C++11 Lambda表达式(匿名函数)详解
C语言线程间通信
C++ deque修改(替换、更改)元素详解
C++11 auto和decltype关键字
C++11右值引用详解
C++ list(STL list)使用、创建和初始化
C++ list(STL list)增加和插入元素详解(insert成员
C语言#include的用法
C++ list(STL list)删除元素方法详解
C++ list(STL list)排序及合并元素方法详解
C语言宏的定义和宏的使用方法(#define)
C++ list(STL list)访问(获取)元素方法详解
资讯动态
公司新闻
互联网资讯
电商资讯
优化推广
技术支持
关于我们
公司简介
企业文化
服务项目
公司新闻
服务项目
网站建设
网站推广
品牌策划
移动应用
服务支持
在线咨询
服务流程
产品报价
售后服务
联系我们
代理加盟
付款方式
在线留言
联系方式
联系方式
电话:400-963-0016
邮箱:sales@itwy.com
QQ:250211130
微信:18520775521
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有
粤ICP备16019765号
广州京杭网络科技有限公司 版权所有
18520775521
QQ洽谈
sales@itwy.com