Azure 上的并行处理

Parallel Processing on Azure

我们正在尝试并行触发两个命令以尝试加快数据的 return,但看起来进程只是在排队。 运行 单独处理这些进程的累积时间等于 运行 同时处理它们。直到第一个数据集 return 编辑第二个数据集。

任何人都可以解释一下情况吗?

谢谢,

我会附上一个例子。

Thread GetResult1Thread = new Thread(new ThreadStart(GetResult1));
GetResult1Thread.IsBackground = true;
GetResult1Thread.Start();

Thread GetResult2Thread = new Thread(new ThreadStart(GetResult2));
GetResult2Thread.IsBackground = true;
GetResult2Thread.Start();

 }

public void GetResult1()
{
 //Blocks time untill database request is complete
 //Total Execution time 1 min
 DataSet ds = db.getSPDataSet("getCBRWeeklyPercentageBody", "@JobID",JobID,
 "@StartDate", StartDate, "@ResourcingGradeIDs",
 ResourceID,  "@StaffIds", StaffIds);
  }


 }

 public void GetResult2()
 {
 //Thread pending do to Result1 is not released from database
 //1 min delayed response
 DataSet ds = db.getSPDataSet("getCBRWeeklyPercentageHeader",
 "@JobID",   JobID, "@StartDate", StartDate,
 "@ResourcingGradeIDs", ResourceID, "@StaffIds", StaffIds);
 }


And the JS------------------------------------------
//Request 1
 $.ajax({
url: "api/SaveDefaultSettings",
data: {
 },
type: "POST",
cache: false,
async: true
success: function (data) {
//Default save result
//Get Active Activity List

ResourceHours = [];
GetDefaultData();
selectedRows = SaveData;
ResourceHours = data;

 var spl = StartDate.split("-")
 if (spl[1].length == 1) {
 spl[1] = "0" + spl[1];
  }
  StartDate = spl[2] + "/" + spl[1] + "/" + spl[0];

   },
  error: function (xhr, ajaxOptions, thrownError) {
   }
  });
 //Request 2
 $.ajax({
 url: "api/GetResources",
 data: { JobID: JobID, StartDate: StartDate },
 type: "POST",
 cache: false,
 async: true
 success: function (data) {
 // CallProgressDialog("Processing", "Please wait while data is loading.");
 Resources = [];
 Resources = data;

 Populate();
 $(".QuantimDialog_Button0").click();
  },
 error: function (xhr, ajaxOptions, thrownError) {
  }
  });

出于测试目的,您能否创建一个更简单的案例?至少减少 DB 依赖将消除建立 DB 连接和执行 SP 的需要,其中可能有一些内部锁定。

另请注意,浏览器对并发连接数有限制() as well as .NET application(https://msdn.microsoft.com/en-us/library/system.net.servicepointmanager.defaultconnectionlimit(v=vs.110).aspx) and the server itself (Max Outgoing Socket Connections in .NET/Windows Server

测试中的变量越少-越有可能缩小瓶颈

这是一种老式的并行处理方式。现在你可以对它们使用 Async stuff built into .Net. Just start two tasks and do an WhenAll