首页 文章
  • 96 votes
     answers
     views

    为什么锁定对象必须是静态的?

    使用私有静态只读对象来锁定多线程是很常见的 . 我知道私有通过收紧封装来减少锁定对象的入口点,因此可以访问最重要的内容 . 但为什么静止? private static readonly object Locker = new object(); 最后,该字段仅在我的 class 中使用,我也可以使用它: private readonly object Locker = new object()...
  • 150 votes
     answers
     views

    Java同步方法锁定对象或方法?

    如果我在同一个类中有2个同步方法,但每个方法访问不同的变量,那么2个线程可以同时访问这两个方法吗?锁是否发生在对象上,或者它是否与synchronized方法中的变量一样具体? 例: class X { private int a; private int b; public synchronized void addA(){ a++; } ...
  • 429 votes
     answers
     views

    为什么锁(这个){...}不好?

    MSDN documentation说 public class SomeObject { public void SomeOperation() { lock(this) { //Access instance variables } } } 如果可以公开访问实例,那就是“一个问题” . 我想知道为什么?是因为锁定的持有时间超过了必要的时间吗?还...
  • 605 votes
     answers
     views

    易失性与联锁对抗锁定

    假设一个类有一个由多个线程访问的 public int counter 字段 . 此 int 仅递增或递减 . 要增加此字段,应使用哪种方法,为什么? lock(this.locker) this.counter++; , Interlocked.Increment(ref this.counter); , 将 counter 的访问修饰符更改为 public volatile . ...
  • 0 votes
     answers
     views

    .Net Lock(上下文)是原子的吗?

    我确实理解.net锁确保只有一个线程执行在锁范围内找到的代码行 . 我不明白的是锁是否是原子的 . 执行锁定代码时是否可以中断线程? 例如 - 在我看来,如果一个锁不是原子的,那么下面的代码不是线程安全的: Class example { private int myNumber; private object context = new object(); void Write() ...
  • 0 votes
     answers
     views

    python asyncio:如何最好地使用锁线程?

    让我们假设我有一个带有asyncio事件循环和其他线程运行的线程 . 我可能不得不处理具有锁定机制的线程之间的同步 . 但锁可能会阻止协程......并且没有其他任务(在asyncio线程中)将同时运行 . 解决办法是什么 ?我的猜测是,一种异步的锁原始可以完成这项工作,但据我所知它并不存在 . 确切地说:我没有提到现有的asyncio lock原语 .
  • 0 votes
     answers
     views

    Android.view.WindowManager $ BadTokenException:

    我正在开发一个Screen Lock应用程序它在某些设备上工作正常,但在某些情况下我收到此错误 java.lang.RuntimeException:在Android.app.ActivityThread.access $ 2200(ActivityThread.java:150)的android.app.ActivityThread.handleServiceArgs(ActivityThre...
  • 3 votes
     answers
     views

    锁定JavaME

    我需要一个简单的锁,JavaME的超时(concurrent.lock的backport需要完整的Java 1.3) . 如果其他人已经为JavaME发布了经过测试的锁定代码,我宁愿使用它 . 锁定是众所周知的困难,所以我想我会问以下代码是否理智: public class TimedLock { private volatile Thread holder = null; pri...
  • 5 votes
     answers
     views

    Intel 64和IA-32 |原子操作包括获取/释放语义

    根据英特尔64和IA-32架构软件开发人员手册,LOCK信号前缀“确保处理器在声明信号时独占使用任何共享内存” . 这可以是总线或缓存锁的形式 . 但是 - 这就是我问这个问题的原因 - 我不清楚,如果这个前缀也提供了任何内存屏障 . 我正在多处理器环境中使用NASM进行开发,并且需要使用可选的获取和/或发布语义来实现原子操作 . 那么,我是否需要使用MFENCE,SFENCE和LFENCE指令或...
  • 1 votes
     answers
     views

    PCL Visualizer演示交互定制崩溃在spinonce上

    我正在尝试使用PCL Visualizer演示示例(所有代码在这里:http://pointclouds.org/documentation/tutorials/pcl_visualizer.php)用于Windows,PCL 1.6,32位版本 . 除了交互式自定义部分之外,它工作正常,具有讽刺意味的是,它已经完成了,看起来它与VTK深度连接,不是线程安全和键盘/鼠标回调干扰VTK窗口 . 但是...
  • 0 votes
     answers
     views

    try-finally之前的.net 2.0锁定和异常 . 除了线程中止之外还有其他例外吗?

    今天我遇到了这个问题:https://blogs.msdn.microsoft.com/ericlippert/2009/03/06/locks-and-exceptions-do-not-mix/ 我使用.net 2.0,基本上,这个代码 lock(syncRootVar) { DoStuff(); } 将展开这个 Monitor.Enter(syncRootVar); try { ...
  • 43 votes
     answers
     views

    在C#中锁定关键字

    我理解来自MSDN的锁定关键字的主要功能 lock语句(C#引用)lock关键字通过获取给定对象的互斥锁,执行语句,然后释放锁来将语句块标记为关键部分 . 什么时候应该使用锁? 例如,它对多线程应用程序有意义,因为它可以保护数据 . 但是,当应用程序没有关闭任何其他线程时,它是否有必要? 使用锁存在性能问题吗? 我刚刚继承了一个在任何地方使用锁的应用程序,它是单线程的,我想知道我应该留下它们,...
  • 4 votes
     answers
     views

    `lock`(Monitor)如何在.NET中运行?

    我最近一直想知道 lock (或更具体的: Monitor )在.NET内部如何处理被锁定的对象 . 具体来说,如果's the case (for groups of monitors) and what happens to the objects that are passed to lock (they don' t似乎引入了额外的内存开销,那么我可以创建更多的全局锁 . 为了澄清我在这里...
  • 416 votes
     answers
     views

    锁如何正常工作?

    我看到,对于使用不是线程安全的对象,我们用这样的锁包装代码: private static readonly Object obj = new Object(); lock (obj) { // thread unsafe code } 那么当多个线程访问相同的代码时会发生什么(让我们假设它在ASP.NET Web应用程序中运行) . 他们排队了吗?如果是这样,他们会等多久? 使用锁会...
  • 0 votes
     answers
     views

    当主机尝试从不同套接字接收数据时是否需要锁定

    我有三台机器A,B和C都相互连接 . 如果A和B尝试同时向C发送数据,Can C是否使用两个不同的线程来接收相应的数据而不使用任何锁?这里C通过不同的插座连接到A和B.提前致谢 .
  • 2 votes
     answers
     views

    线程锁 - 真的需要吗?

    我一直在密集使用线程(并行处理)和锁(防止共享对象的同时操作) . 由于我编写的代码具有非常高的并行线程处理速度,接收数据和填充共享数据缓冲区,我想知道什么时候需要锁? 编写共享对象 读取共享对象 更新在其内容上给出的共享对象 我理解主要是第三种情况是关键的(考虑到线程和锁的着名“增量计数器”示例) . 但是我应该在其他情况下使用锁吗? 在我的特殊情况下,它是关于用作数据缓冲区的p...
  • 0 votes
     answers
     views

    Linux线程中的文件段/段/记录锁

    我有一个多线程进程,其中一个文件由多个线程共享(读取和写入) . 有什么方法线程可以锁定一个文件段,以便其他线程无法访问它?我试过了 fcntl(fd, F_SETLKW, &flock) ,但是这个锁仅适用于进程,而不适用于线程(进程中所有线程之间共享一个锁) .
  • 36 votes
     answers
     views

    了解多处理:Python中的共享内存管理,锁和队列

    Multiprocessing是python中一个强大的工具,我想更深入地理解它 . 我想知道何时使用常规Locks和Queues以及何时使用多处理Manager在所有进程中共享这些 . 我提出了以下测试方案,其中包含四种不同的多处理条件: 使用池和 NO 经理 使用池和管理器 使用单个进程和 NO Manager 使用单个进程和Manager 工作 所有条件都执行作业功能 ...
  • 1 votes
     answers
     views

    防止Acrobat阅读器在打开时锁定PDF

    如果有人在他的机器上打开带有Acrobat Reader的PDF,则没有人可以保存该文件的新版本 . 我正在寻找一种方法告诉Adobe Acrobat reader不要锁定文件进行编辑 .
  • 153 votes
     answers
     views

    C#中各种线程同步选项有什么区别?

    有人可以解释之间的区别: lock(someobject){} 使用互斥锁 使用信号量 使用监视器 使用其他.Net同步类 我只是想不出来 . 在我看来前两个是一样的?
  • 4 votes
     answers
     views

    Java EE并发和锁定

    我有一个MDB(消息驱动的bean),它接收带有String的消息,代表一个单词 . 我在数据库中也有一个表 . MDB应该在表格中存储单词和每个单词被接收的次数(计数器) . 问题是为了获得更好的性能,MDB在许多实例中启动,并且当不同实例接收到相同的新单词时,它们都创建计数为1的同一行 . 为了解决这个问题,我应该使单词字段唯一,然后第二个实例将在提交时失败,重新传输消息,这将起作用,但可能...
  • 2 votes
     answers
     views

    CAS支持aerospike python客户端

    我使用aerospike作为缓存层,需要实现CAS(比较和设置/交换) . 虽然我能够找到与php客户端(http://www.aerospike.com/docs/client/php/usage/kvs/write.html)相同的支持,但同样不适用于python客户端 . 任何人都知道CAS是否也支持python客户端 - 如果有任何相同的文档? 谢谢!
  • -3 votes
     answers
     views

    Windows服务中的C#文件锁定

    我写了一个Windows服务来执行以下操作 . Call Hand Punch机器的供应商.exe生成文本文件以从Hand Punch机器获取数据 . 存储在临时文件夹中 . 使用 System.Diagnostics.Process.Start 调用.exe 附上并发送电子邮件文件 SmtpClient客户端=新的SmtpClient(); MailMessage mail = ne...
  • 3 votes
     answers
     views

    在解锁之前更改锁定屏幕的方向时,应用程序被杀死

    我有游戏在横向模式下运行 . 当我按下锁定按钮然后再次解锁时一切正常 . 我还处理屏幕方向更改,如下所示: <activity android:configChanges="orientation|keyboard|keyboardHidden" android:screenOrientation="portrait" 一切正常,只有...
  • 0 votes
     answers
     views

    防止其他用户访问文件SVN Get Lock

    我习惯使用VSS,但已切换到SVN-使用VisualSVN作为服务器,使用tortoiseSVN作为客户端 . 我想要的是当一些用户想要编辑文件时,他应该做getlock . 之后,该文件不应该对其他用户可编辑 . 这是VSS用来工作的方式 . 我知道这样做可能会破坏让不同用户在同一个文件上工作并稍后合并它们的目的,但我仍然需要这样做 . 我相信SVN还提供了get lock命令的钩子,所以我们可...
  • 0 votes
     answers
     views

    仅在发送和接收时是否真的需要通过Lock序列化套接字?

    我想知道在使用Pythons套接字时是否真的需要使用例如 threading.Lock ,其中每个线程只从该套接字发送和接收 . 打开和关闭始终由父级处理 . 在搜索答案时,大多数人只是说套接字不是线程安全的,并且需要使用某些东西来序列化它们 . 但没有人真正解释为什么这是必需的 . 其他人说 send 和 recv 在操作系统级别上是线程安全的,因此可以并行使用而不进行序列化(here) . 我...
  • 0 votes
     answers
     views

    并发:如何防止两个不同类中的两个方法同时运行?

    我有一个用例,我必须防止两个不同的类中的两个不同的方法同时运行,即如果类A有方法X而类B有方法Y,我必须确保当methodX被执行时,我在methodX完成之前,不应允许方法Y执行或阻止执行 . class A{ @Scheduled methodX(){ } } class B{ methodY(){} } 一点背景,这里 methodX 是一个调度进程,负责...
  • 377 votes
     answers
     views
  • 0 votes
     answers
     views

    Neo4j:通过Java API或Cypher进行显式的悲观锁定

    有没有办法通过Neo4J Java API或Cypher手动获取某组节点上的写锁? 有examples in documentation,但仅适用于嵌入式Neo4j版本 . 标准Java Transaction 接口不包含此类方法:https://neo4j.com/docs/api/java-driver/current/org/neo4j/driver/v1/Transaction.html...
  • 2 votes
     answers
     views

    popen - 锁定还是不安全?

    我已经看到了一些popen()/ pclose()的实现 . 他们都使用了静态的pid列表,没有锁定: static int *pids; static int fds; if (!pids) { if ((fds = getdtablesize()) <= 0) return (NULL); if ((pids = malloc(f...

热门问题