当前位置 : 主页 > 网络编程 > 其它编程 >

多线程的特性

来源:互联网 收集:自由互联 发布时间:2023-07-02
1.原子性:    一个操作或者多个操作,要么全部执行成功,要么全部执行失败。比如账户转账问题,a账户向b转100,a账户减去100元,b账户加上一百元,这两个操作必须具备原子性,
1.原子性:    一个操作或者多个操作,要么全部执行成功,要么全部执行失败。比如账户转账问题,a账户向b转100,a账户减去100元,b账户加上一百元,这两个操作必须具备原子性,

1.原子性:

一个操作或者多个操作,要么全部执行成功,要么全部执行失败。比如账户转账问题,a账户向b转100,a账户减去100元,b账户加上一百元,这两个操作必须具备原子性,才能保证数据的安全,所以需要锁来保证数据的原子性

2.可见性:

当一个线程修改变量之后,其他线程能够立即看见修改到的值。比如有两个线程a,b,两个共有变量i,线程a修改了i的值,没有及时刷新到主存,线程b看到还是修改之前的值。这就是线程的可见性的问题。

3.有序性:

程序执行的顺序按照代码的先后顺序执行。一般来说处理器为了提高程序的执行效率,可能会对输入的代码进行优化,

它不保证程序中各个语句的执行先后顺序同代码中的顺序一致,但是它会保证程序最终执行结果和代码顺序执行的结果是一致的。如下:

int a = 10; //语句1

int r = 2; //语句2

a = a + 3; //语句3

r = a*a; //语句4

则因为重排序,他还可能执行顺序为 2-1-3-4,1-3-2-4

但绝不可能 2-1-4-3,因为这打破了依赖关系。显然重排序对单线程运行是不会有任何问题,而多线程就不一定了,所以我们在多线程编程时就得考虑这个问题了。

【文章原创作者:香港显卡服务器 http://www.558idc.com/hkgpu.html 网络转载请说明出处】
上一篇:wxPython之wx.font类
下一篇:没有了
网友评论