我有一个程序需要连接到一定数量的SSH服务器。 [如果他们不忙],[应更改状态,如果正在执行的任务应更改为true,如果完成则应更改为false]。
并在该SSH上完成一些任务。 我有SSH列表,线程数组和任务列表。
在此阶段我需要做的所有事情。
-SSH =>(如果正在执行任务(IsBusy = true
)。
-SSH =>(如果不执行任务或未完成(IsBusy = false
)。
-if [IsBusy = false
使用线程..应该承担一个完成任务的任务。
当服务器执行任务时,应将其从任务列表中删除,并且IsBusy也将为true。
-任务应该是异步的!。
public static List<string> tasks = new List<string>();
public static List<SSH> servers = new List<SSH>();
在Main.cs
// Adding Poco Tasks
for (int i = 0; i < 2000; i++)
{
tasks.Add(i.ToString());
}
// Adding Poco Servers
for (int i = 0; i < 20; i++)
{
servers.Add(new SSH() { Name = i.ToString(), IsBusy = false });
}
// My Threads Array
Thread[] threads = new Thread[50];
for (int i = 0; i < 50; i++)
{
var thread = new Thread(async () =>
{
await CompleteTask(tasks[0]);
});
threads[i] = thread;
}
// Just Renaming Threads
for (int i = 0; i < 50; i++)
{
threads[i].Name = i.ToString();
threads[i].Start();
}
和任务
static async Task CompleteTask(string task)
{
while (tasks.Count > 0)
{
lock (tasks)
{
Console.WriteLine("Current Thread is {0} ans Status is {1} Tasks id = {2} ", Thread.CurrentThread.Name, Thread.CurrentThread.IsAlive, task);
tasks.Remove(task);
}
}
}
我要寻找的结果
Current Thread is 1 ans Status is True Tasks id = 1
Current Thread is 2 ans Status is True Tasks id = 2
Current Thread is 3 ans Status is True Tasks id = 3
Current Thread is 1 ans Status is True Tasks id = 4
Current Thread is 4 ans Status is True Tasks id = 5
Current Thread is 5 ans Status is True Tasks id = 6
Current Thread is 2 ans Status is True Tasks id = 7