标签: semaphore

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

这是一个面试问题.

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

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

mutex仅用于多线程.

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

对 ?

欢迎任何评论.

谢谢

multithreading synchronization mutex semaphore multiprocessing

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

php信号量不起作用

我有以下代码,信号量不会按预期锁定它.

(我知道apc_inc.这不是我想要的.)

$semkey = sem_get(123);
sem_acquire($semkey);

$count = apc_fetch('count111');
if(!$count) $count = 0;
$count++;
apc_store('count111', $count);

sem_release($semkey);
Run Code Online (Sandbox Code Playgroud)

其次是

ab -n 4000 -c 200 http://localhost/test.php

0请求失败.

但之后apc_fetch('count111')只显示了~1200次点击

nginx on ubuntu 12.04(64bit),php 5.3.16~dotdeb,php-fpm

  • 更新1:完美适用于Linux mint,5.4.6~dotdeb,内置于Web服务器.我将使用与nginx相同的版本尝试相同的机器.

php semaphore apc

24
推荐指数
1
解决办法
1984
查看次数

.NET反向信号量?

也许现在已经太晚了,但我想不出一个很好的方法来做到这一点.

我已经开始了一堆异步下载,我想等到它们都在程序终止之前完成.这让我相信我应该在下载开始时增加一些东西,并在它完成时减少它.但那我怎么等到计数再次为0

信号量以相反的方式工作,因为当没有可用资源时阻塞,而不是当它们全部可用时阻塞(当count为0而不是非零时为块).

.net c# multithreading semaphore

23
推荐指数
3
解决办法
6618
查看次数

如何在C中的分叉进程上使用POSIX信号量?

我想分叉多个进程,然后在它们上使用信号量.这是我尝试过的:

sem_init(&sem, 1, 1);   /* semaphore*, pshared, value */
.
.
.
if(pid != 0){ /* parent process */
    wait(NULL); /* wait all child processes */

    printf("\nParent: All children have exited.\n");
    .
    .
    /* cleanup semaphores */
    sem_destroy(&sem);      
    exit(0);
}
else{ /* child process */
    sem_wait(&sem);     /* P operation */
    printf("  Child(%d) is in critical section.\n",i);
    sleep(1);
    *p += i%3;  /* increment *p by 0, 1 or 2 based on i */
    printf("  Child(%d) new value of *p=%d.\n",i,*p);
    sem_post(&sem);     /* …
Run Code Online (Sandbox Code Playgroud)

c linux fork semaphore shared-memory

22
推荐指数
1
解决办法
4万
查看次数

同步的Vs信号量

在阅读Java中的并发性时,我有以下疑问:

  1. Java是否提供较低级别的构造然后同步以进行同步?

  2. 在什么情况下我们会使用信号量而不是synchronized(它在Java中提供监视器行为)

java semaphore monitor synchronized

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

Mutex,Semaphore和Spin Locks之间的区别

我正在用IPC进行实验,特别是使用Mutex,Semaphore和Spin Lock.我学到的是Mutex用于异步锁定(具有睡眠(根据我在NET上读到的理论))机制,信号量是同步锁定(具有信号和睡眠)机制,并且自旋锁是同步但非睡眠机制.

任何人都可以帮我澄清这些东西吗?另一个疑问是关于Mutex,当我用线程和互斥体编写程序时,一个线程正在运行另一个线程不处于Sleep状态但它不断尝试获取Lock.所以Mutex正在睡觉或不睡觉???

multithreading mutex semaphore ipc spinlock

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

用户和内核空间之间的共享信号量

精简版

是否可以在用户空间和内核空间之间共享信号量(或任何其他同步锁)?命名的POSIX信号量具有内核持久性,这就是为什么我想知道是否有可能从内核上下文创建和/或访问它们.

由于有关正常使用POSIX信号量的大量信息,搜索互联网并没有多大帮助.

长版

我正在为实时系统开发一个统一的界面,我在其中添加了一些书籍,由信号量保护.这些书籍保留是在资源分配和解除分配上完成的,这是在非实时环境中完成的.

使用RTAI,等待和发布信号量的线程需要处于实时上下文中.这意味着使用RTAI的命名信号量意味着在用户空间中的每个等待/发布之间切换实时和非实时上下文,更糟糕的是,为内核空间中的每个sem/wait创建一个短实时线程.

我正在寻找的是一种在内核和用户空间之间共享正常Linux或POSIX信号量的方法,这样我就可以安全地在非实时环境中等待/发布它.

任何有关此主题的信息将不胜感激.如果这是不可能的,你还有其他任何想法如何完成这项任务?1

1一种方法是添加系统调用,在内核空间中具有信号量,并让用户空间进程调用该系统调用,并且信号量将全部在内核空间中进行管理.如果我不是因为这个而不必修补内核,我会更高兴.

c semaphore linux-kernel

21
推荐指数
2
解决办法
7217
查看次数

在Windows上使用C中的线程.简单的例子?

我需要什么以及如何在Windows Vista上使用C语言中的线程?

你能给我一个简单的代码示例吗?

c windows multithreading semaphore

20
推荐指数
1
解决办法
5万
查看次数

我是否需要处理SemaphoreSlim

根据文件:

"a SemaphoreSlim不使用Windows内核信号量".

是否有任何特殊资源SemaphoreSlim使得DisposeSemaphoreSlim不再使用遗嘱时呼叫很重要?

.net c# dispose semaphore idisposable

20
推荐指数
4
解决办法
3812
查看次数

什么是互斥锁和信号量在c#中?我们需要实施的地方?

C#中的互斥锁和信号量是什么?我们需要实施的地方?

我们如何在多线程中与他们合作?

c# multithreading mutex semaphore

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