synclock

    0热度

    1回答

    有人可以帮助我理解synclock语句的工作原理吗?我知道还有一些关于synclock的帖子,但我无法很好地回答这些问题。我正试图让一个简单的多线程示例启动并运行,但遇到了麻烦。起初我尝试了下面的代码。 Public Class Class1 Public list As List(Of Integer) = New List(Of Integer) Public Sub a

    5热度

    1回答

    我有一个应用程序内服务,它允许我从各种来源提供消息,并将其放入一个简单的列表中。该服务在其自己的线程中运行,将定期将列表中的所有消息处理为各种文件;每个源的一个文件,然后进行大小管理。 我的问题是关于检查消息并对访问列表的代码执行锁定的正确方法。只有两个地方可以访问该列表;一个是将消息添加到列表中,另一个是将消息从列表转储到处理列表中的地方。 添加一条消息到列表: Public Sub Write

    0热度

    1回答

    跟进this post。我的目标是只有一个Calculate的时间,所以我增加了一个为SyncLock: Public Sub Calculate(Optional inBack As Boolean = True) If Not inBack Then InternalCalculate(-1, False) Else If CalcThread Is

    0热度

    1回答

    你好还有stackoverflow!我只需切入下面的步骤: 我有一个使用TCP的服务器/客户端程序,并且我在用于放入读取数据包的队列中遇到了一些问题。一旦数据包被读取,它就会进入队列,如果程序不忙处理数据包,它将处理它并从队列中取出队列。 这里是排队数据的代码: If ReadIndex = ReadBuffer.Length Then SyncLock ReadQueue

    0热度

    1回答

    我有一个Module,我想用来缓存一些东西。这很简单。我想避开ConcurrentDictionary,因为它需要有保证的操作。 Public Module SchemaTableCache Private lockObject As New Object Private columnCache As New Dictionary(Of String, SortedSet(Of

    1热度

    1回答

    MS参考:http://msdn.microsoft.com/en-us/library/3a86s51t(v=vs.71).aspx “的类型中一个的SyncLock语句中的表达式必须是引用类型,例如一个类,模块,接口,阵列或委托”。 场景:多线程读取和编辑列表。 我知道这将避免出现竞争状况: SyncLock TheList TheList.item(0) = "string" End S

    2热度

    1回答

    我的情况是我有以下方法,使用SyncLock确保一次写入一个线程的文件。 Private Shared lockThis As New Object Public Sub Process() SyncLock lockThis File.AppendAllText("c:\jamo\foo.txt","foo") End SyncLock End Sub 我

    2热度

    2回答

    我需要从(后台)线程列表中读取,而它可能会从另一个(主线程)更新。所以我试图做一个临时列表不要访问原始对象。由于更新可能发生在多个地方,因此将SyncLock放置在读取逻辑上会很方便。这本质上是错误的吗?我正确锁定这个选项的方法有哪些,或者其他方式在多线程条件下获取列表的可访问副本? ' In Main thread: Public SomeList = New List(Of SomeClas

    1热度

    1回答

    我有一个类管理自动刷新一些对象,也允许您手动刷新下面的代码。我想让它线程安全。 Public Function ForceRefresh() As Foo DoRefresh() ResetTimer() Return Me.CurrentFoo End Function Private Sub DoRefresh() Me._currentFoo =

    1热度

    2回答

    我的fpga是斯巴达3E-100 Cp132。我有四个按钮作为我的输入,我想通过使用它们来增加电路板7段上的四位数字。 VHDL代码低于: entity main is port(b1,b2,b3,b4 : in STD_LOGIC; clk : in STD_LOGIC; sseg : out STD_LOGIC_VECTOR(0 to 6);