Привет, я новичок в многопоточности и хотел бы попросить вашего совета и рекомендаций.
На нашем сервере запущена служба, которая запрашивает данные для уведомлений наших клиентов.Мы хотели, чтобы сервис обрабатывал данные быстрее.В настоящее время наша существующая служба опрашивает и обрабатывает данные в одном потоке, что иногда вызывает задержку уведомлений на почасовой основе.Я планирую использовать ThreadPool
для одновременной обработки данных.У меня есть этот фрагмент кода, который имитирует мой план и идею.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Mail;
using System.Security;
using System.Text;
using System.Threading;
using System.Xml;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using System.Net.Sockets;
using System.Security.Authentication;
using System.Web;
namespace ThreadPooling
{
class Program
{
static int nMaxRecord = 0;
static ManualResetEvent mre = new ManualResetEvent(false);
static Timer TestThread = null;
static void Main(string[] args)
{
TestThread = new Timer(new TimerCallback(ProcessWithThreadPoolMethod), null, 500, Timeout.Infinite);
Thread.Sleep(Timeout.Infinite);
}
static void ProcessWithThreadPoolMethod(object ostate) // Sample processing of data
{
nMaxRecord = 1300;
ThreadPool.SetMaxThreads(3, 0);
for (int i = 0; i < 1300; i++)
{
ThreadPool.QueueUserWorkItem(ProcessWithThreadMethod, i);
}
mre.WaitOne();
Console.WriteLine("Test");
TestThread.Change(5000, Timeout.Infinite);
}
static void ProcessWithThreadMethod(object callback)
{
for (int i = 0; i <= 10; i++)
{
Console.WriteLine((int)callback);
}
if(Interlocked.Decrement(ref nMaxRecord) == 0)
{
mre.Set();
}
}
}
}
Во время работы консольного приложения я заметил, что количество потоков продолжает увеличиваться, хотя я ограничил максимальные потоки в ThreadPool
на 3. AmЯ правильно делаю?Хотел бы спросить несколько советов и плюсов и минусов по моей концепции.