synchronization相关内容

互斥体所有权队列顺序

说,如果我有三个线程都通过互斥锁访问相同的互斥部分. 让我给你这个例子. 第一个线程探测互斥锁并首先获取其所有权: //THREAD 1 //TIME: 2013-03-13 01:00:00.000Z WaitForSingleObject(hMutex, INFINITE); //Performs the operation that lasts 50 ms Releas ..
发布时间:2020-05-14 02:14:19 C/C++开发

在Ruby中将类实例变量用于互斥量

注意:下面显示的代码摘要不是对我遇到问题的代码的提炼.由于其他人已经回答了,所以我在这里留下了原始摘要,但是我在下面提供的答案中显示了 actual 代码. 我无法将其隔离到一个失败的小测试用例中,但是以下通用构造使我失败了: class Foo @mutex = Mutex.new .... def self.bar @mutex.synchronize { ..
发布时间:2020-05-14 02:14:12 其他开发

关于pthread互斥锁所涉及的完整内存障碍的说明

我听说在处理互斥锁时,必需的内存屏障由pthread API本身处理.我想在这件事上有更多细节. 至少在周围最常见的架构上,这些说法是否正确? 编译器是否能够识别此隐式障碍,并避免在生成代码时对操作/从本地寄存器读取的操作进行重新排序? 何时应用内存屏障:成功获取互斥锁后并释放互斥锁? 解决方案 POSIX规范列出了必须在附录A.4.11 中,明确指出“同步内存"的功能: ..
发布时间:2020-05-14 02:13:49 其他开发

使用POSIX信号量的可重用屏障实现

需要一个创建5个pthread的解决方案.每个pthread执行一个函数,该函数涉及循环遍历10次.在循环的每次迭代中,线程都会将int从0递增到0.9 * MAX_INT,然后打印迭代次数.确保5个线程中的每一个都完成循环的第i次迭代,然后才能开始第(i + 1)次迭代(即,所有线程在每次迭代结束时都进行同步/集合).我需要使用通过POSIX信号量实现的两相屏障来强制执行同步约束 我写了以 ..
发布时间:2020-05-14 01:52:41 其他开发

在wait()/signal()块中获取互斥锁会怎样?

因此,练习的描述是: 您在这家餐厅里有N分,您可以在那里索要一份炸薯条.每个点有M个部分.这里有1个frycheff.当订购点有2份时,它会警告厨师需要重新装填. Cheff按FIFO的顺序交付这些部分. 我们做了这个伪代码: init { Semafoor[] mutex; Condition[] cond_point = new Condition[N]; ..

TextView不同步

我正在构建我的第一个应用程序和简单游戏,类似于带有数字的MasterMind.我希望当个人电脑尝试找到我的号码时,不要立即显示他在找到正确号码之前所做的所有尝试,而要逐步显示出来.例如,CPU说出第一个数字,等待一秒钟,然后说出第二个数字,依此类推.这是代码: public void startCPU() { int num; int strike; int xx; ..
发布时间:2020-05-14 01:49:14 Java开发

在单个线程中处理多个无限任务? PS一次运行一个任务并从外部控制其任务行为(即启动/停止任务)

我想制作一个包含3个无限任务的线程. 我希望一次运行一个任务,并在需要时启动/停止运行任务. 例如,首先我要运行任务1,然后我要运行任务2,但在停止任务1之后又再次要任务1运行,但在任务2停止之后,依此类推. 无限任务需要检查某些条件,如果满足该条件,请执行一些操作;如果不满足睡眠条件,请等待几秒钟,然后在唤醒后再次执行上述相同操作. 无限可运行任务看起来像这样: n ..
发布时间:2020-05-14 01:48:44 Java开发

ISynchronizeInvoke与SynchronizationContext与mainForm.Invoke

我有一个Worker类和一个MainForm/UI类.从UI类,我在新的后台线程中创建了Worker类的新实例.该线程将一些更新编组回UI控件.由于它们位于不同的类中,因此我基本上将MainForm实例(this)和适当的委托(用于更新控件)传递给worker类的构造函数.在构造函数中,我将mainForm设置为ISynchronizeInvoke对象(称为_synch),然后在worker类中进 ..
发布时间:2020-05-14 01:47:06 C#/.NET

在Python中同步多线程

下面的代码中的BrokenLinkTest类执行以下操作. 获取网页网址 找到网页中的所有链接 同时获取链接的标题(这样做是为了检查链接是否断开) 收到所有标头后,打印“完成". from bs4 import BeautifulSoup import requests class BrokenLinkTest(object): def __init__(self, ..
发布时间:2020-05-14 01:45:23 Python

C#同步等待/轮询方法

我有一个公开两种方法的类: -GetObject 获取单个对象,如果没有,则返回null. -WaitForObject 获取单个对象,或等到它们成为一个对象. 示例实现: class MyClass { MyStack stack; public object GetObject() { ..
发布时间:2020-05-14 01:38:24 C#/.NET

在此多线程Java代码中是否真的存在竞争条件?

在这个问题中,我看到了一段代码,我无法理解(很可能是因为事实是该领域的初学者).这个问题是关于“一种明显的竞争条件,在这种竞争条件下,生产者有时会完成信号并发出信号,而ConsumerWorkers会在消耗队列中的所有内容之前停止运行." 据我所知,只有在生产者决定不再在队列中添加项目之后,才会在消费者上设置"isRunning".因此,如果使用者线程看到isRunning为FALSE,然后 ..

线程安全的有限大小队列

我试图写一个subj队列,但是遇到死锁和其他多线程问题.我想使用Interlocked.CompareExchange来避免使用lock.但是此代码无法按预期工作:只会擦除整个Queue.我在这里做错什么了? public class FixedSizedQueue : IEnumerable { readonly ConcurrentQueue _queue = ..
发布时间:2020-05-14 01:24:59 C#/.NET

Java同步和集合

如果同步的代码块包含未同步的集合.集合是否被认为是线程安全的?如果没有,您能否提供两个线程可能无法安全地访问同步代码中的集合的任何实际情况? 谢谢. 解决方案 仅当访问集合的所有代码都已同步并且它们使用相同的“对象"对其进行同步时. 例如,下面的代码将不会同步,因为它们已同步到不同的对象. public class Foo { private final Coll ..

在Java中从多个线程读取(而不是修改)不是线程安全的对象(如链接列表)是否安全?

已经有一个询问线程是否可以同时安全地读取/迭代LinkeList .似乎答案是肯定的,因为没有人从链接列表中进行过结构上的更改(添加/删除). 尽管有一个答案是关于“未刷新的缓存"的警告,并建议您了解"java内存模型".所以我要详细说明那些“邪恶的"缓存.我是新手,到目前为止,我仍然天真地相信以下代码是可以的(至少从我的测试中来说) public static class worke ..
发布时间:2020-05-14 01:19:47 Java开发