【发布时间】:2018-05-05 15:25:49
【问题描述】:
我有一个带有一堆序列的 F# 类。该类包含一个简单的next() 方法,它返回当前序列中的下一个元素。如果当前序列的所有元素都已返回,则它将转移到下一个序列。该类包含一个指针,该指针是序列中的下一个元素以及它从哪个序列返回。
我目前仅限于公开next() 方法。
一些上游类将在不同线程之间使用我的类(同一个对象实例)。这将使观点不同步,因为多个线程都应该从头开始。我知道这并不理想,但这是我目前必须解决的问题。
例子:
Thread 1 next(): return elem. A
Thread 1 next(): return elem. B
Thread 2 next(): return elem. A
Thread 1 next(): return elem. C
Thread 2 next(): return elem. B
有没有办法跟踪每个线程的指针?
我一直在考虑使用Threading.Thread.CurrentThread.ManagedThreadId 作为 Map 中的键,然后返回指针(并相应地在那里更新它)。我有点担心这个 Map 的线程安全性以及两个线程是否同时更新它们的状态。
我希望 somone 可以为我提供一些关于如何让它发挥作用的想法。
【问题讨论】:
标签: .net multithreading f# thread-safety