mutex相关内容

调用内部可变lambda时std :: function是否锁定互斥锁?

除非另有说明,否则C ++标准库提供有关其类型的以下保证: (1)读操作(即在 const 对象上进行操作)是线程安全的.这意味着只要没有线程同时向该对象写入(应用非 const 操作),就可以在没有竞争条件的情况下同时从一个对象读取多个线程. (2)只要每个对象一次最多只能访问一个线程,则多个线程可以同时读取和写入任意对象. 标准库对用户类型的要求相同.(您可以在 GotW#9 ..
发布时间:2021-05-30 20:08:41 C/C++开发

Linux中允许的c/c ++互斥锁最大数量

我一直在努力尝试找出Linux上不成功的c/c ++进程最大互斥量.另外,还有一种方法可以修改此号码.我正在阅读的书提到了如何找到Linux允许的最大线程数以及如何修改该数字,但没有提到互斥体. 解决方案 选中此 pthread_mutex_init . 为什么没有定义限制 考虑了为互斥锁和条件变量的最大数量定义符号,但由于这些对象的数量可能会动态变化,因此被拒绝.此外,许多实 ..
发布时间:2021-05-30 20:08:30 C/C++开发

VBA是否使用全局解释器锁定?所有解释语言都需要一种吗?

可以使用 Application.Run 方法将VBA类(COM对象)从一个托管的VBA进程传递到另一个(例如,一个Excel.exe实例传递到另一个).这意味着第二个进程(线程2)将有权访问第一个进程(线程1)中定义的代码. 因此,第二个线程可能会在线程1的对象上调用一个方法,该对象使用第一个线程的解释器运行,因此线程1的解释器同时从线程1和线程2调用. 这对任何人来说都不足为奇,但 ..
发布时间:2021-05-16 19:48:21 其他开发

在SQLite中获得排他锁的功能

我试图获取SQLite数据库的排他锁. 我使用了 sqlite3_db_mutex(db); 和 sqlite3_mutex_try(mutexObj)函数来获取锁定,但是,当我尝试从其他外壳程序向同一数据库执行查询时,我能够在表中插入行,从表中读取数据 我想要的是将LOCK锁定到数据库,以便在这段时间内,没有人可以对数据库进行任何更改,而我已经获得了该锁.Sqlite中有可能吗? 解决 ..
发布时间:2021-04-28 20:00:52 数据库

if块内std :: lock_guard的范围

当前正在研究 std :: mutex ,希望获得一些帮助.如果我的代码看起来像- ....如果(returnBoolValue()){std :: lock_guard锁(mutex_var);........}.... std :: lock_guard 是否在保护if条件下返回值的函数?IE. returnBoolValue() 如果可能的话,我应该 ..
发布时间:2021-04-20 18:38:55 C/C++开发

为什么sizeof(std :: mutex)== 40(gcc,clang,icc)?

而不是 sizeof(std :: atomic)== 1 吗? 互斥锁可以通过一个简单的 std :: atomic 来实现,因此我认为互斥锁的大小可以很小,或者说是4(32位). 解决方案 使用一个 bool ,您只能实现自旋锁.请注意,这将是一个不公平的锁,因为没有任何方法可以确保服务员排队,因此在最极端的情况下,如果竞争激烈,则线程可能会永远被阻塞 ..
发布时间:2021-04-20 18:38:16 C/C++开发

为什么std :: mutex既不可复制又不可移动?

有人能说出为什么 std :: mutex 既不可复制又不可移动的原因?有人告诉我,它与避免资源浪费有一些关系.为什么 std :: mutex 的副本构造函数应标记为已删除?如果没有,是否有任何潜在的问题?它的copy构造函数明显地标记为已删除,但是我没有看到它的motion构造函数这样的声明.那么为什么 cppreference 说 std :: mutex 不能移动? 解决方案 在其 ..
发布时间:2021-04-19 19:34:23 C/C++开发

使用Mutex强制单实例处理重启应用程序

当我想使用互斥体强制程序的单个实例时出现问题. 我是带有WebBrowser控件的Winform应用程序.如果满足某些条件,我需要自动重启. 我的问题是,如果我重新启动该应用程序,则互斥锁要让我打开一个新实例(这种情况并不总是会发生),这可能会导致浏览器具有某些类似async的方法,例如Navigation. 但是我在退出应用程序事件中释放了Mutex. 这是我的代码: ..
发布时间:2021-04-01 20:10:04 C#/.NET

如何在共享内存派生进程中使用互斥锁?

我在一个多进程程序之间共享一个计数器变量,该程序使用fork()调用创建进程.我正在使用以下代码创建一个用于存储计数器的共享内存,并且每个进程都可以对其进行访问和递增. 这是主父线程中的线程创建机制 void createSHM() { int key = SHMKEY; int *shm; if ((shmid = shmget(key, SHMSZ, IPC_CREAT | 06 ..
发布时间:2021-02-08 19:44:59 其他开发

是否可以使用单锁生成死锁

这是一个面试问题。 通常情况下,线程1锁定互斥锁1时会在2个线程之间产生死锁,而在线程1试图锁定互斥锁2之前,线程2会锁定互斥锁2.之后,胎面2想要锁定互斥锁1,因此它们将永远等待对方。 问题是“您能给出一个互斥锁和任意数量的线程的死锁情况吗?” 解决方案 死锁需要4件事: 互斥-指拥有可以被锁定的资源(锁)的想法。 无先占权-无法强制获取锁 循环等待-指一个线程 ..
发布时间:2020-10-19 04:12:45 其他开发

如何停止C ++中的线程执行

我在主程序中创建了一个线程,一旦主程序终止,线程执行必须停止。我正在使用 reader.join(); 终止线程执行。 我尝试使用下面提到的代码,我使用的是 thread.join(); 函数,但无法终止线程。在主程序之后,我的线程也继续执行。 #include #include #include #include ..
发布时间:2020-09-27 18:45:33 C/C++开发

原子< bool> vs bool受互斥锁保护

我们假设我们有一个内存区域,某个线程正在向其中写入数据.然后,它将注意力转移到其他位置,并允许任意其他线程读取数据.但是,在某个时间点,它希望重用该存储区并再次写入该存储区. writer线程提供一个布尔标志(valid),该标志指示该内存仍可从中读取(即,他尚未重用它).在某个时候,他会将此标志设置为false,再也不会将其设置为true(它只会翻转一次,就是这样). 具有顺序一致性 ..
发布时间:2020-09-13 19:24:41 C/C++开发

thread_cancel和阻塞功能为cond_wait

我的主进程将pthread_cancel发送到另一个线程,该线程正在等待cond_wait(&condition)发生的情况.在pthread_cancel上他们说:延迟的取消功能意味着取消将被延迟,直到线程接下来调用一个作为取消点的函数.但是,这些函数通常是阻塞函数.然后我的问题是,只有在该线程被解除阻塞后才取消线程(在我的示例中是通过广播或信号),否则它会看到我当前正在取消点上阻塞,然后取消了 ..
发布时间:2020-05-14 02:19:44 C/C++开发

使用where表达式从队列出队

我有一个基于 Marc Gravell的 现在,我遇到了只想让某个对象出队的情况,我知道这实际上并不是队列的用例,但是在某些情况下,我认为这是一个很好的扩展,例如等待某个网络答案 这类似于 TryDequeueWhere(Func expression, out T value, int? waitTimeInMs = null) 问题是我不知道如何等待和阻止某个 ..
发布时间:2020-05-14 02:19:34 C#/.NET

前台应用程序的周期性任务并发问题

我正在开发Windows Live Phone 8应用程序,该应用程序将具有实时翻转功能.我将创建一个计划的代理(周期性任务而不占用资源),该代理将使用本地数据更新实时图块. 整个应用程序不会以任何方式连接到互联网,它仅使用本地数据.因此,推送通知是不可能的. 启动时,我需要从后台代理和/或从前台应用更新实时磁贴. 但是,如何确保前台应用程序和后台代理不会踩到对方的脚趾?我有两个 ..

仅启动一次应用程序(单声道)

我目前正在用c#开发一个mono应用程序,我只想开始一次.我知道,这可以通过互斥锁来实现.但是,如何使用Mono将应用程序置于最前面呢? 我尝试通过 获取流程 Process.GetProcessByName("AudioCuesheetEditor") 但无法访问MainWindowHandle. 如何将正在运行的应用程序置于最前面? 感谢您的回答. 编辑: 现在 ..
发布时间:2020-05-14 02:19:24 C#/.NET

QMutex需要读取变量

我通过公共可访问成员变量来命令线程,这些成员变量通常受相应的互斥锁保护. 我的问题是这样的: 如果在写访问期间单个变量受互斥锁保护 应该在读取访问期间也对其进行保护吗?还是我可以简单地读取它? 示例: 线程检查是否应该做一些特别的事情 ( doSpecial 写在另一个线程中) // some code if (doSpecial) { // code } // some ..
发布时间:2020-05-14 02:19:22 C/C++开发