首页 / 知识
关于多线程:证明多线程算法的正确性
2023-04-16 01:22:00

Proving correctness of multithread algorithms多线程算法特别难以设计/调试/验证。 Dekker的算法是设计正确的同步算法有多困难的主要示例。 Tanenbaum的Modern操作系统在其IPC部分中提供了示例。 有人为此提供很好的参考(书籍,文章)吗? 谢谢! 如果不保证担保人就不可能证明任何事情,因此,您要做的第一件事就是熟悉目标平台的内存模型。 Java和x86都有可靠的标准化内存模型-我不太确定CLR,但是如果其他所有方法都失败了,您将建立在目标CPU体系结构的内存模型上。该规则的例外是,如果您打算使用一种根本不允许任何共享的可变状态的语言-我听说Erlang就是这样。 并发的第一个问题是共享可变状态。 可以通过以下方法解决:
并发的第二个问题是安全发布。您如何使数据可用于其他线程?您如何执行移交?您将在内存模型中以及(希望如此)在API中解决此问题。例如,Java有多种发布状态的方法,而java.util.concurrent包包含专门设计用于处理线程间通信的工具。 并发的第三个(也是更困难的)问题是锁定。错误管理的锁顺序是死锁的根源。您可以基于内存模型保证人来分析证明,代码中是否可能出现死锁。但是,您需要牢记这一点来设计和编写代码,否则代码的复杂性将很快使这种分析在实践中无法执行。 然后,一旦或在做之前,证明并发的正确使用,就必须证明单线程的正确性。并发代码库中可能发生的错误集等于单线程程序错误集,再加上所有可能的并发错误。
"并发和分布式编程原理",M。Ben-Ari Pi微积分,移动过程理论是一个很好的起点。 简短的回答:很难。 从1980年代后期开始,DEC SRC Modula-3和落叶松属植物中确实有一些出色的工作。 例如
Modula-3的一些好主意正使其进入Java世界,例如 我没有任何具体的参考,但是您可能想研究Owicki-Gries理论(如果您喜欢定理证明)或过程理论/代数(也有各种可用的模型检查工具)。
@以防万一:我是。但是据我了解,对于非平凡的算法而言,这样做是一个很大的痛苦。我把这种事情留给聪明的人。我从《并行程序设计:基础》(1988)中学到了什么 |
最新内容
相关内容
防篡改算法linux命令?
防篡改算法linux命令?,技术,网络,系统,数据,区块链,电子,交易,信息,网站,国际,编程高手来啊!!!急啊!!!在你的倒数第5两行中间插入一行:Call Dealinux命令行调试代码?
linux命令行调试代码?,环境,代码,信息,平台,程序,编辑,版本,步骤,体系结构,处理器,linux怎么调试pythonLinux中如何安装Python?安装pycharmPychlinux下单步调试命令?
linux下单步调试命令?,信息,系统,代码,工程,地址,工具,工作,数据,管理,环境,linux系统中怎样单步调试c++工程1、一般工作在命令行模式;c程序的linux串口调试命令?
linux串口调试命令?,设备,数据,信息,数字,系统,标准,通讯,软件,通用,状态,linux中注册了串口设备ttyE0,但是对其cat和echo指令都卡住,无任何反linux多线程下载命令?
linux多线程下载命令?,软件,工具,平台,中心,系统,代理,网络,网站,手机,官方网站,从linux服务器中下载或上传文件wget是linux下一个从网络上自linux查看多线程命令?
linux查看多线程命令?,系统,第一,线程,地址,数据,进程,命令,名称,软件,情况,如何查看linux服务器的cpu数量,内核数,和cpu线程数如何查看linuxlinux调试终端命令?
linux调试终端命令?,系统,工作,地址,首页,电脑,终端,命令,标准,信息,基础,求Linux操作系统的一些终端命令,多谢。linux系统常用操作命令linuxlinux下载命令多线程?
linux下载命令多线程?,系统,单位,概念,数据,线程,进程,产品,地址,代码,状态,谁有linux下多线程库的源码啊,要确实可用的,确实可以免费下载的,linux脚本调试的命令?
linux脚本调试的命令?,工作,系统,管理,命令,地址,标准,脚本,底部,代码,官网,linux下shell脚本命令shell变量调出命令。linux中的shell脚本有多linux命令调试模式?
linux命令调试模式?,系统,工作,信息,地址,工程,命令,工具,环境,设备,地方,linux下如何使用gdb调试gdb test 进入调试需要调试的地方打下断点,rulinux调试驱动的命令?
linux调试驱动的命令?,系统,网络,官网,百度,地址,下来,第一,官方网站,软件,情况,linux下安装编译网卡驱动的方法1、网卡相关的TCP/IP网络配置linux命令调试过程?
linux命令调试过程?,代码,通用,地方,信息,系统,程序,进程,命令,编辑,断点,如何使用linux下gdb来调试python程序1、gdb是用来调试二进制程序的,