如何使用控制台应用程序处理多线程或并行任务

本文关键字:多线程 并行任务 处理 应用程序 何使用 控制台 | 更新日期: 2023-09-27 18:29:33

我正在编写一个控制台应用程序,它将执行两项任务
该应用程序将由Windows调度程序在非高峰时段每天运行一次,当它运行时,它将执行以下操作:

  • 扫描包含数百个文件的5-6个文件夹,用文件名更新SQL表
  • 此应用程序将被另外两个应用程序引用,这些应用程序将使用公共方法向SQL表写入异常。例外情况更多的是业务规则例外情况

调度程序可能会调用该应用程序来执行其分配的任务,同时也会调用其他应用程序。我该如何设计应用程序以确保没有冲突。我在思考多线程并行任务?

如何使用控制台应用程序处理多线程或并行任务

您实际上不需要做任何事情。在这种情况下,操作系统会为您处理所有并行性。任务调度程序启动一个进程。其他使用你的应用程序在不同的进程中运行。您可以在一个线程上运行所有处理,并且两个任务仍然可以并行进行。

你唯一需要注意的是共享资源。例如,如果在执行此操作时正在写入硬编码的日志文件,则其中一个任务将失败,或者必须等待日志文件变为可写。

除非你在做一些愚蠢的事情,否则SQL访问也应该没有问题;只需确保运行与事务中的任务相关的所有查询,使数据库在事务结束时处于一致状态即可。

一个潜在的问题来源是我喜欢称之为"假装可序列化事务"。在MSSQL中,它们被称为SNAPSHOT事务。为了绝对安全,请确保使用可序列化事务,并准备好在提交因冲突而失败时重试整个事务。