我試圖設計一個天青工人角色例程。工作角色輪詢作業隊列。對於每個作業,在作業消息中指定所需的線程數。作業正在運行可執行文件的實例。例如:可執行文件的名稱是Rax.exe。 Rax.exe可以在不同數量的線程上運行。如果我們將其稱爲Rax.exe -T 2,它將創建兩個線程。所以我們不必處理如何創建線程。我們只需用適當的命令行參數調用Rax.exe即可。我有超大型工作者實例。所以,我可以同時運行8個線程。我想盡可能地利用工人。我們可能有很多作業,每個作業都有不同數量的指定線程。Azure Worker角色設計
實施例:
Job Queue:
1 Rax.exe -T 3
2 Rax.exe -T 5
3 Rax.exe -T 1
4 Rax.exe -T 8
5 Rax.exe -T 4
在這個例子中,我們有5個作業。工作人員讀取第一條消息並開始工作。這項工作消耗3個線程。一個工作者可以有8個線程,所以剩下的5個線程可以通過從隊列中運行另一個工作來使用。
目前,我不知道如何在一個輔助角色內運行多個進程。我正在使用進程類的waitForExit方法。可執行文件的每個運行實例都會創建輸出文件,因此我必須收集這些生成的文件。
我的問題:
1 - 我怎樣才能異步啓動多個進程,當他們退出的通知?我仍然在輪詢工作隊列時這麼做。這種工作安排是一個難題嗎?任何人都可以想出一個很好的啓發式嗎?
編輯: 我認爲,估計每個工作所需的運行時間將會有所幫助。這種信息存在。有了這些信息,它能解決嗎?
您能否解釋爲什麼要創建額外的進程而不是使用並行任務API?這聽起來很適合它。 – 2011-05-25 04:15:33