我正在编写一个可以执行两项任务的控制台应用程序 该应用程序将在非高峰时段由Windows调度程序每天运行一次,当它运行时将执行以下操作:
调度程序可能会调用应用程序来执行其分配的任务,也可能同时由其他应用程序调用。我如何设计应用程序以确保没有冲突。我正在考虑多线程,并行任务?
答案 0 :(得分:2)
你真的不需要做任何事情。在这种情况下,操作系统会为您处理所有并行操作。任务调度程序启动一个进程。使用您的其他应用程序正在单独的进程中运行。您可以在单个线程上运行所有处理,并且两个任务仍然可以并行进行。
您唯一需要注意的是共享资源。例如,如果您在执行此操作时写入硬编码的日志文件,其中一个任务将失败,或者必须等待日志文件变为可写。
除非你做的事情愚蠢,否则SQL访问也应该没问题;只需确保运行与事务中任务相关的所有查询,使数据库在事务结束时保持一致状态。
一个潜在的问题来源是假装可序列化的交易,因为我喜欢称之为。在MSSQL中,它们被称为SNAPSHOT transactions。为了绝对完全安全,请确保使用可序列化事务,并且如果由于冲突而提交失败,则可以重试整个事务。