Articles of 同步

单声道替代名为Mutex

在Windows / .NET上,可以使用命名的Mutex来同步多个进程。 不幸的是,Mono在Linux上不太支持。 他们的发行说明说,Linux不支持这个Windowsfunction,它将是不可靠的模拟它。 无论如何,似乎最好避免build议的入侵。 那么有什么build议的select? 我需要使我的程序安全地同时运行,只有一小段需要与其他实例同步。 该应用程序最终需要部署在Ubuntu Linux与Mono 2.10,但为了testing,将不胜感激,如果它也适用于.NET 4的Windows 7。

Python是否有同步?

同步手册页说: sync()会导致所有缓冲修改,以便将文件元数据和数据写入底层文件系统。 Python有一个呼叫来做到这一点? PS不是fsync ,我明白了。

unlocked_ioctl vs正常的ioctl

在我的驱动程序的file_operations结构中,我有: struct file_operations Fops = { read: device_read, write: device_write, unlocked_ioctl: device_ioctl, … }; 即没有使用ioctl字段。 这足以避免大内核锁,并进入device_ioctl()没有任何同步? 或者我必须更改代码的用户空间部分中的ioctl()调用吗?

这个典型的羊群例子是如何工作的?

当必须通过文件系统同步程序(shell脚本)时,我发现了一个基于flock的解决scheme(也应该在NFS上工作)。 从脚本内使用的规范示例(来自http://linux.die.net/man/1/flock )是: ( flock -s 200 # … commands executed under lock … ) 200>/var/lock/mylockfile 我不明白为什么这个整个构造确保了primefaces性。 特别是,我想知道当例如bash执行这些代码200>/var/lock/mylockfile , flock -s 200和200>/var/lock/mylockfile被执行的200>/var/lock/mylockfile 。 这个顺序是保证/确定的吗? 我的理解是,这个习语应该是确定性的。 但是由于子shell是在subprocess中产生的,我不明白这两个进程是如何同步的。 我只看到这两个命令之间的竞争条件已经。 我会很感激,如果有人可以让我对这个消失的困惑,并解释为什么这个构造可以用来安全地同步进程。 同时,如果有人知道,我会感兴趣的是select一些任意的文件描述符(如本例中的200 )是多么的安全,特别是在有很多客户端的大型NFS文件系统的情况下。

Linux中使用条件variables的Windows事件实现?

我正试图在Linux中实现非常简单的Windows事件。 只为我的情况 – 3个线程,1个主要和2次要。 每个辅助线程通过SetEvent引发1个事件,主线程等待它。 例: int main() { void* Events[2]; Events[0] = CreateEvent(); Events[1] = CreateEvent(); pthread_start(Thread, Events[0]); pthread_start(Thread, Events[1]); WaitForMultipleObjects(2, Events, 30000) // 30 seconds timeout return 0; } int* thread(void* Event) { // Do something SetEvent(Event); // Do something } 所以,要实现它,我使用条件variables。 但是我的问题是 – 这是正确的吗? 或者我做错了什么? 我的实现: // Actually, this function return pointer […]

与FIFO等待队列的Linux同步

在等待队列是FIFO的Linux中是否有锁? 这似乎是这样一个明显的事情,但我刚刚发现,pthread互斥体不是先进先出,信号量显然也不是FIFO(我正在研究内核2.4(作业))… Linux是否与FIFO等待队列locking,还是有一个简单的方法来使现有的机制之一?

pthreads互斥量与信号量

pthread库提供的信号量和互斥量有什么区别?

如何重命名以Unix时间戳开头的多个文件 – imapsync问题

我没有从imapsync的脚本重命名maildir文件名工作。 : – / 所以我需要的是: 我有一个邮件文件夹与数以千计的邮件。 在将这些电子邮件导入到我的新服务器之后,电子邮件的文件名将创builddate的文件名称作为Unix时间戳,但是文件的创builddate标志是来自电子邮件的正确接收date。 一个文件的ls -l如下所示: -rw-r–r– 1 popuser popuser 1350432 2013-03-16 07:22 1363563215.M562903P29332V0000000000000802I0000000000AEA46B_527.my-domain.org,S=1350432:2,S 所以脚本要做的是:1)读取文件的创builddate/时间(我find了命令 stat -c %y filename 做这个) 2)将date/时间从1)转换为Unix时间戳 date -d "2013-03-17 11:19:01.000000000 +0100" "+%s" 3)删除文件名的前10个数字(错误的时间戳),而是从2)中删除时间戳 4)为特定目录中的所有文件执行此操作 我是Linux脚本中的newby,任何人都可以用这个脚本来帮助我吗? 谢谢!

什么构成asynchronous安全

据说你应该只在一个信号处理程序中调用asynchronous安全的函数。 我的问题是,什么构成asynchronous安全 ? 一个可重入和线程安全的函数是asynchronous安全的,我猜? 或没有?

pthread_mutex_lock是如何实现的

我只是很想知道如何在Unix中实现进程和线程之间的同步相关的函数意味着当我打电话说pthread_mutex_lock什么都发生? 任何指针? 或源代码真的有帮助。