相关疑难解决方法(0)

一个快速生产者多个慢消费者的最佳方案是什么?

我正在寻找实现一个生产者多个消费者多线程应用程序的最佳方案.目前我正在使用一个队列来共享缓冲区,但它比一个生产者一个消费者的情况要慢得多.我打算这样做:

Queue<item>[] buffs = new Queue<item>[N];
object[] _locks = new object[N];
static void Produce()
{
    int curIndex = 0;
    while(true)
    {
        // Produce item;
        lock(_locks[curIndex])
        {
            buffs[curIndex].Enqueue(curItem);
            Monitor.Pulse(_locks[curIndex]);
        }
        curIndex = (curIndex+1)%N;
    }
}

static void Consume(int myIndex)
{
    item curItem;
    while(true)
    {
        lock(_locks[myIndex])
        {
            while(buffs[myIndex].Count == 0)
                Monitor.Wait(_locks[myIndex]);
            curItem = buffs[myIndex].Dequeue();
        }
        // Consume item;
    }
}

static void main()
{
    int N = 100;
    Thread[] consumers = new Thread[N];
    for(int i = 0; i < N; i++)
    { …
Run Code Online (Sandbox Code Playgroud)

c# multithreading producer-consumer processing-efficiency

4
推荐指数
1
解决办法
2164
查看次数

在线程池之外创建线程有什么好处?

好的,所以我想知道当我使用TaskCreationOptions.LongRunning. 通过这个答案,我开始知道对于长时间运行的任务,我应该使用这个选项,因为它在 threadpool 之外创建了一个线程。

凉爽的。但是当我在线程池之外创建线程时,我会得到什么好处呢?什么时候做并避免它?

.net c# multithreading asynchronous task

3
推荐指数
1
解决办法
1016
查看次数

快速C#线程类

有一个关于创建C#线程的快速问题.

  • 它需要每10分钟运行一次
  • 工人将工作,然后再睡10分钟
  • 也可以通过调用Trigger()来触发它立即运行
  • 它可以通过调用Stop()来停止

我用ManualResetEvent创建了一个,它在调用Stop()时设置.这很好但是我需要创建另一个ManualResetEvent或wait句柄才能立即触发工作者吗?

c# multithreading

2
推荐指数
1
解决办法
1462
查看次数

线程无效

有人能告诉我为什么以下代码不起作用?

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        Thread t = new Thread(rtb2);
        t.Start();
    }

    private void rtb2()
    {
        try
        {
            richTextBox1.Text = "1";                
        }
        catch(InvalidOperationException ex)
        {
            MessageBox.Show("HI");
        }            
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# c#-4.0

0
推荐指数
1
解决办法
870
查看次数