对于线程来说,是否有相当于 SIGSTOP 和 SICONT 的东西?我正在使用 pthreads。
谢谢
编辑:
我正在实现线程之间文件访问同步的粗略形式。因此,如果一个文件已被一个线程打开,而另一个线程想要再次打开它,我需要在第二个线程执行时停止或暂停。当第一个线程完成其工作时,它将检查哪些其他线程想要使用它释放的文件并“唤醒”它们。然后第二个线程从该点恢复执行。我使用自己的簿记数据结构。
我将告诉您如何做事,而不是回答问题。 (查找“X Y 问题”。)
您试图阻止两个线程同时访问同一个文件。换句话说,访问是互斥的。 “互斥体”就是为了做到这一点而设计的。一般来说,如果您搜索您正在尝试执行的操作(防止两个线程同时访问同一资源),而不是搜索您想要如何执行此操作(让一个线程等待另一个线程),则更容易找到帮助。
Edit:听起来你实际上想要很多读者而不是一位作家。这可能是第二个最常见的同步问题(仅次于“生产者-消费者”问题)。用一个pthread_rwlock
: 读者来电pthread_rdlock
作家们呼吁pthread_wrlock
.
如果您正在做如此复杂的事情,您确实应该开始阅读相关文献。如果您认为认真阅读一些内容就可以进行多线程编程,那么您比我聪明得多,并且不需要我的帮助。我推荐“The Little Book of Semaphores”,它是免费下载的(source http://greenteapress.com/semaphores/)。这与 pthread 无关,但它是好东西。您所询问的读者-作者问题可以在“经典同步问题”一章的第 4.2 节中找到(哎呀,这个问题甚至在简介中提到过)。
多线程编程是HARD用大写字母和粗体字体。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)