标签: semaphore

在类UNIX系统上删除所有SYSTEM V共享内存和信号量

如何在类UNIX系统上使用单个命令删除所有未使用的信号量和共享内存,例如Ubuntu?

unix linux posix semaphore shared-memory

35
推荐指数
5
解决办法
10万
查看次数

Binary Semaphore vs ReentrantLock

我一直在努力了解Reentrant锁和信号量(Reentrant锁与释放/解锁机制的嵌套).

似乎有一个信号量需要你编写一个更彻底测试的应用程序,因为release()方法不检查释放许可证的线程是否实际上持有它.当我测试我的测试代码时,我发现这可能随后增加超过初始限制的许可数量.另一方面,如果一个线程在调用unlock方法时没有持有重入锁,我们会得到一个IllegalMonitorException.

所以说没有真正的理由拥有二进制信号量是正确的,因为二进制信号量可以做的一切也可以由ReentrantLock完成.如果我们使用二进制信号量,我们必须检查整个方法调用堆栈以查看之前是否获得了许可证(如果有可能进行后续获取,它也会被释放 - 如果某个版本没有继续获取它可能会阻止它等等).此外,由于重入锁也为每个对象提供一个锁,因此更喜欢将重入锁定为二进制信号量并不总是更好吗?

我在这里查了一篇文章,讨论二进制信号量和互斥量之间的区别,但有没有像Java中的互斥量这样的东西?

谢谢,陈.

PS - 我在另一个论坛(http://www.coderanch.com/t/615796/threads/java/reason-prefer-binary-Semaphore-Reentrant)发布了这个问题,但我还没有收到回复.我以为我会在这里发布它,看看我能得到什么.

java multithreading semaphore

32
推荐指数
3
解决办法
2万
查看次数

USB连接的"信号量超时时间已过期"错误

我收到这个错误......

信号量超时期限已过期.

在这条线上......

ThePorts.ActivePort1.Open();

......但我不时会得到它.当它发生时,它会一次又一次地发生.然后问题消失了几个小时或几天,然后又回来了.

串口是连接蓝牙的USB.

我认为这个人有一个非常相似的问题,但不是在C#

使用usbser.sys冻结SerialPort.Open/DeviceIoControl/GetcommState

我可以估计,我已经阅读了他的整个问题,以及由此产生的评论和答案,但我真的无法弄清楚哪一个解决了他的问题,或者C#是否与他的体验有很大不同.

感谢您对无能为力的任何帮助.这是它发生的实际代码.

public static void Open_ActivePortWeWillUse(String Drone_StringNameFromUser)
{
    SerialPort TempSerialPort = new SerialPort(Drone_StringNameFromUser, (int) SerialPortSpeed);

    ThePorts.ActivePort1 = TempSerialPort;

    ThePorts.ActivePort1.DataBits = 8;
    ThePorts.ActivePort1.Parity = Parity.None;
    ThePorts.ActivePort1.StopBits = StopBits.One;

    ThePorts.ActivePort1.DataReceived += new SerialDataReceivedEventHandler(OurBackGroundSerialPortReceiver);

    ThePorts.ActivePort1.Open();  // "Sometimes" Error hits here
}
Run Code Online (Sandbox Code Playgroud)

c# usb semaphore serial-port usbserial

31
推荐指数
2
解决办法
10万
查看次数

如何判断我的程序的另一个实例是否已在运行?

如何判断我的程序的一个实例是否正在运行?我以为我可以用数据文件做这个但它只是凌乱:(

我想这样做,因为我只希望一个实例在一个点上打开.

delphi persistence mutex semaphore instance

29
推荐指数
5
解决办法
2万
查看次数

计数和二进制信号量之间的区别

Counting和二进制信号量有什么区别.

我在某处看到的是,两者都可以控制已请求资源的N个进程.两者都采取了自由状态.

二元信号量和计数信号量可以保护多少资源是否有任何限制?

两者都只允许一个进程一次使用一个资源......

还有其他区别吗?上述属性是否正确?

operating-system semaphore

29
推荐指数
2
解决办法
8万
查看次数

shell脚本中是否有任何互斥/信号量机制?

我正在寻找shell脚本中的互斥/信号量/并发机制.请考虑以下情况:除非"a"用户未关闭共享文件,否则"b"用户无法打开/更新它.我只是想知道如何在shell脚本中实现互斥,信号量,关键部分等.

哪个是在shell脚本中实现锁定机制[文件级别]的最简单方法?

unix bash shell concurrency semaphore

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

Monitor vs Mutex

我读到互斥锁是一个值为1(二进制信号量)的信号量,用于强制互斥.

我读到了这个链接 Semaphore vs. Monitors - 有什么区别? 这表明监视器有助于实现互斥.

任何人都可以告诉我互斥和监视器之间的区别,因为两者实际上都在做同样的事情

multithreading operating-system mutex semaphore monitor

27
推荐指数
3
解决办法
1万
查看次数

System V和Posix信号量之间的差异

使用System V和Posix信号量之间的权衡取舍是什么?

unix comparison posix semaphore tradeoff

26
推荐指数
3
解决办法
2万
查看次数

如何使用共享内存在进程之间共享信号量

我必须将N个客户端进程与一个服务器同步.这些进程由一个main函数分叉,我在其中声明了3个信号量.我决定使用POSIX信号量,但我不知道如何在这些进程之间共享它们.我认为共享内存应该正常工作,但我有一些问题:

  • 如何在我的片段中分配正确的内存空间?
  • 我可以sizeof(sem_t)size_t字段中shmget使用以便准确分配我需要的空间吗?
  • 有没有人有类似这种情况的例子?

c synchronization shared semaphore client-server

25
推荐指数
2
解决办法
6万
查看次数

是否可以在Linux/UNIX上的多处理案例中使用互斥?

这是一个面试问题.

是否可以在Linux/UNIX上的多处理案例中使用互斥?

我的想法:不,不同的进程有独立的内存空间.

mutex仅用于多线程.

信号量用于多处理以进行同步.

对 ?

欢迎任何评论.

谢谢

multithreading synchronization mutex semaphore multiprocessing

24
推荐指数
3
解决办法
5万
查看次数