我正在编写一个控制台应用程序,它将执行两个任务。
该应用程序将由Windows调度程序在非高峰时间每天运行一次,运行时将执行以下操作:
有一种可能性,即该应用程序将被调度程序调用来执行其指定的任务,同时也会被其他应用程序调用。我将如何设计这个应用程序,以确保没有冲突。我在考虑多线程,并行任务吗?
发布于 2012-03-29 13:05:24
你真的不需要做任何事。在这种情况下,操作系统为您处理所有并行性。任务调度程序启动一个进程。其他使用您的应用程序运行在不同的进程中。您可以在单个线程上运行所有处理,这两个任务仍然可以并行进行。
唯一需要注意的是共享资源。例如,如果您在执行此操作时写入硬编码日志文件,则其中一项任务将失败,或者必须等待日志文件变得可写。
除非您做了一些愚蠢的事情,否则SQL访问也应该没有问题;只需确保运行与事务中的任务相关的所有查询,在事务结束时保持数据库的一致状态。
一个潜在的问题来源是假装的可串行化的事务,我喜欢称之为它们。在MSSQL中,它们被称为快照事务。要确保绝对安全,请确保使用可序列化的事务,并准备好在由于冲突导致提交失败时重新尝试整个事件。
https://stackoverflow.com/questions/9919109
复制相似问题