Ich habe eine Software geschrieben, die ThreadPool für Multithreading verwendet.
%Vor%Innerhalb jedes Threads führe ich blockierende Netzwerkoperationen durch (arbeite mit http). Software, die um das Blockieren des Netzwerkmodells entwickelt wurde, und ich kann nicht zu nicht blockierten 1-Thread-E / A-Geräten wechseln.
Es funktioniert perfekt auf Windows-Plattform, ich kann 128-512 Threads pro Kern ohne Probleme verwenden, alle funktionieren so, wie es funktionieren sollte. Aber als ich zu mono wechselte, sah ich ein seltsames Verhalten. Ich kann nicht machen, dass viele Threads pro CPU-Kern laufen, max kann ich bekommen - 1 Thread pro Kern, egal was ich in SetMinThreads / SetMaxThreads spezifiziere.
habe ich unter Linux mit .NET 4 / 4.5, MONO Version 3.2.1 und einigen älteren Versionen auf meinem alten System versucht. Btw, einfacher Threading-Code funktioniert gut, zum Beispiel ergibt dies das gewünschte Ergebnis:
%Vor%Wir haben auch viel mit mono experimentiert und schaut, dass folgende hilft:
Wir verwenden beide Optionen und mono unter Linux ziemlich schnell (vergleichbar mit .net unter Windows)
Tags und Links c# mono threadpool