相关疑难解决方法(0)

C#数组是否安全?

特别是

  1. 创建一个函数以将数组和索引作为参数.
  2. 创建一个元素数组.
  3. 创建一个计数循环.
  4. 在新线程的循环内部,使用传入的索引器将对象的新实例分配给数组.

我知道如何管理线程等.我很想知道这是否是线程安全的做事方式.

 class Program
{
    // bogus object
    class SomeObject
    {
        private int value1;
        private int value2;

        public SomeObject(int value1, int value2)
        {
            this.value1 = value1;
            this.value2 = value2;
        }
    }

    static void Main(string[] args)
    {

        var s = new SomeObject[10];
        var threads = Environment.ProcessorCount - 1;
        var stp = new SmartThreadPool(1000, threads, threads);
        for (var i = 0; i < 10; i++)
        {
            stp.QueueWorkItem(CreateElement, s, i);
        }

    }

    static void CreateElement(SomeObject[] s, int index)
    { …
Run Code Online (Sandbox Code Playgroud)

c# arrays multithreading thread-safety

51
推荐指数
4
解决办法
3万
查看次数

Parallel.ForEach Ordered Execution

我试图使用新的C#4.0 Parallel.ForEach函数在对象列表上执行并行函数.这是一个非常漫长的维护过程.我想让它按列表的顺序执行,以便我可以在前一点停止并继续执行.我该怎么做呢?

这是一个例子.我有一个对象列表:a1 to a100.这是当前的订单:

a1, a51, a2, a52, a3, a53...
Run Code Online (Sandbox Code Playgroud)

我想要这个订单:

a1, a2, a3, a4...
Run Code Online (Sandbox Code Playgroud)

我可以将一些对象无序运行,但只要我能在列表中找到一个点,我可以说在此之前所有对象都已运行.我阅读了并行编程csharp白皮书,但没有看到任何相关内容.ParallelOptions课堂上没有这个设置.

parallel-processing foreach html-lists c#-4.0

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

你在那里,异步写入值?

最近几天我一直在阅读有关 async/await 的内容。昨天我在第 9 频道上发现了这个视频,让我对某些事情感到惊奇。请考虑下面的幻灯片。

任务中的变量分配

除了 Lucian Wischik 解决的问题之外,我还想知道变量赋值。假设我们更改了async voidinto async Task,并awaitSendData调用之前添加。这使我们能够获取流,分配变量m_GetResponse,等待两秒钟并打印它。但是变量会发生什么?它可以由与读取不同的线程写入。我们是否需要某种内存屏障,使变量变得易失,或者其他什么?当我们打印它时它仍然为空吗?

c# asynchronous thread-safety async-await

7
推荐指数
1
解决办法
389
查看次数