标签: synclock

jQuery Ajax SyncLock

我有几个按钮,用户可以点击以使用jQuery的$ .ajax加载内容.所有按钮都将内容加载到相同的div标签中.问题是,如果用户快速点击多次,内容可能会在登陆正确的内容之前闪烁几次.

我有什么解决方法?我在想类似.net的SyncLock功能,但在javascript/jQuery中.理想的解决方案是取消队列中当前的请求并启动新的请求.

需要注意的一点是,可能存在多个不相关的ajax请求,因此我无法清除所有请求,只是与这个div标签相关的请求.

ajax jquery synclock

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

两个对象上的SyncLock

假设我有两个对象ab.

我想在两个对象上使用SyncLock.

这可行吗?它可以通过嵌套的SyncLock语句完成吗?这种手术有哪些危险?

编辑

也许我应该问,一个重构怎么能避免死锁?

.net synclock

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

如何SyncLock共享整数

我对一般的多线程很新,我想知道如何锁定共享整数变量,以便其他线程在被其他线程读取/更新时不被其他线程访问.

当我尝试这样做时SyncLock myInteger,我得到了错误:错误6'SyncLock'操作数不能是'Integer'类型,因为'Integer'不是引用类型.

这是我的意思的简化示例

Private Shared myInteger As Integer

Private Sub MySub()
  SyncLock myInteger ' This does not work
    ' read/write a new value to myInteger
  End SyncLock
End Sub
Run Code Online (Sandbox Code Playgroud)

MySub由该类的多个实例调用,并在多个线程中运行

.net vb.net multithreading thread-safety synclock

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

使用SyncLock同步对List(T)的访问

我有一个类,其中包含多线程应用程序中使用的List(of T).我有三种方法Get,Add和Remove这些访问和修改List(of T).每当我查询所需对象以及添加或删除对象时,我都在使用SyncLock来锁定m_List. 但是,当我添加一个对象或删除一个对象而不是在我搜索所需的对象时,我只是想通过简单地锁定m_List来获得性能提升是多么奇怪?

Public Shared sub Add(SomeObject as object)

     SyncLock ctype(m_List, IList).SyncRoot

         m_List.add(SomeObject)

     end SyncLock

end sub

Public Shared sub Remove(SearchString as string)

     SyncLock ctype(m_List, IList).SyncRoot

           m_List.RemoveAll(function(o as SomeObject) o.SomeProperty = SearchString)

     end SyncLock
end Function

Public Shared Function Get(SearchString as string) as SomeObject
     'The Commented out code is what I am thinking of removing...
     'SyncLock ctype(m_List, IList).SyncRoot

     Dim FoundObjectList = m_List.where(function(o as SomeObject) o.SomeProperty = SearchString)

    if FoundObjectList.count > 0 then 

       If FoundObjectList(0).CreateDate < Now.AddMinutes(5) then
          Remove(FoundObjectList(0).SomeProperty)
          Return …
Run Code Online (Sandbox Code Playgroud)

.net vb.net multithreading locking synclock

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

在此代码中锁定的位置和内容

我有一个类,其中有两个方法,一个调用一个创建并执行多个线程的类,另一个是一个事件处理程序,它处理在这些线程完成时引发的事件(然后再次调用第一个方法).

我知道处理事件的方法在引发事件的线程中运行.因此,我SyncLock一个成员变量,说明正在运行多少个线程并从中减去一个:

SyncLock Me ' GetType(me)
    _availableThreads -= 1
End SyncLock
Run Code Online (Sandbox Code Playgroud)

所以我有几个问题:

主要问题:我是否应该在类中的任何地方使用SyncLock'ing _availableThreads - 即在创建线程的方法中(在创建线程时添加1)

与此问题相关的附带问题:

  1. 我通常会同步SyncLock当前的实例,但我已经看到了SyncLocks类型的代码,那么同步锁定SyncLock(Current Instance)和_availableThreads?之间的区别是什么?

  2. 这两者之间会有性能差异吗?并且有什么小的我可以锁定以上不影响其他任何东西 - 可能是一个单独的'挂锁'对象创建的唯一目的是锁定类中的东西?

注意:_available线程的唯一目的是控制在任何给定时间可以运行的线程数,并且线程处理可能需要数小时才能运行的作业.

码:

Public Class QManager
    Private _maxThreadCount, _availableThreads As Integer

    Public Sub New(ByVal maxThreadCount As Integer)
        Me.MaximumThreadCount = maxThreadCount
    End Sub

    Public Sub WorkThroughQueue()

        //get jobs from queue (priorities change, so call this every time)
        Dim jobQ As Queue(Of QdJobInfo) = QueueDAO.GetJobList


        //loop job queue while there are jobs and we have threads …
Run Code Online (Sandbox Code Playgroud)

vb.net multithreading thread-safety synclock

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

SyncLock来自两个不同线程的相同对象

基本上我有一个全局变量,比如......

Dim int1 as integer
Run Code Online (Sandbox Code Playgroud)

然后我有两个异步函数,比如...

function bleh()
    int1 += 1
end function
Run Code Online (Sandbox Code Playgroud)

function Meh()
     int1 -= 1
end function
Run Code Online (Sandbox Code Playgroud)

这两个函数都由Task.Run()运行.

我想在这两个函数中使用SyncLock.但是,MSDN站点上给出的所有示例仅显示在单个函数中使用的SyncLock的示例.所以我不能简单地从MSDN描述中告诉我,对于我来说,在全局变量上跨两个不同的函数使用SyncLock是"没问题的".

我想做的是这样的:

Private Shared SyncObj as Object '<-- global
Dim int1 as integer '<-- global

Sub Form_Load(...)
     SyncObj = new Object
     Task.Run(Function() bleh())
     Task.Run(Function() Meh())
End Sub

Function bleh()
     SyncLock SyncObj
        int1 += 1
     End SyncLock
End Function
Function Meh()
     SyncLock SyncObj
        int1 -= 1
     End SyncLock
End Function
Run Code Online (Sandbox Code Playgroud)

这可以吗?将bleh()阻止Meh()改变int1,反之亦然?谢谢!对不起VB大声笑.

vb.net synclock

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

标签 统计

synclock ×6

vb.net ×4

.net ×3

multithreading ×3

thread-safety ×2

ajax ×1

jquery ×1

locking ×1