race-condition 相关问题

竞争条件是多个线程/进程/客户端都使用资源,而没有正确使用锁。

酒店预订系统中处理多个预订并发的预订流程的最佳实践是什么?

对于我的大学项目,我正在使用 Java 以及 Spring 框架和 MySQL 数据库开发一个酒店预订应用程序。 数据库详细信息: 我有一个存储预订的实体类型

回答 1 投票 0

避免 SQLite 中的竞争条件

我担心数据库支持的应用程序中的竞争条件。我的应用程序允许用户预订课程名额。如果所有名额均已满,则将被列入候补名单。在

回答 3 投票 0

如何从输入流中读取一段时间?

我必须在特定时间从InputStream 读取行并返回我在列表中读取的行。在我当前的解决方案中,我不确定这是否是中断线程的最佳方法,因为有些......

回答 1 投票 0

从 Rust 自定义操作内部读取时,Wix CustomActionData 属性值 10 次中有 2 次为空

在 WIX 代码中,我们声明了延迟的自定义操作,该操作将保护凭证和 辅助自定义操作,为其设置 CustomActionData 值,如下所示: 在 WIX 代码中,我们声明了延迟的自定义操作,该操作将保护凭证和 辅助自定义操作,为其设置 CustomActionData 值,如下所示: <CustomAction Id="SetUserNamePasswordForDefferedAction" Property="HandleAccountInfoCustomAction" Value="[ACCOUNT_USERNAME],[ACCOUNT_PASSWORD],[INSTALLLOCATION],[SERVICEACCOUNT]" HideTarget="no" Return="check" /> <CustomAction Id="HandleAccountInfoCustomAction" DllEntry="handle_account_info" BinaryKey="service_account_dll" Execute="deferred" HideTarget="no" Impersonate="no" Return="check"/> <Binary Id="service_account_dll" SourceFile="service_account.dll" /> <InstallExecuteSequence> <Custom Action="HandleAccountInfoCustomAction" Before="InstallFinalize">NOT Installed</Custom> <Custom Action="SetUserNamePasswordForDefferedAction" Before="HandleAccountInfoCustomAction">NOT Installed</Custom> </InstallExecuteSequence> service_account_dll 在 Rust 中实现,但以 C 格式导出入口点 handle_account_info。读取自定义操作数据的 Rust 代码如下: unsafe fn retrieve_property_from_msi_db( h_install: MSIHANDLE, property_name_str: &str, ) -> StdResult<String, u32> { let property_name = get_ptr_to_cstring(property_name_str); custom_action_log(&format!("Retrieve {property_name_str} from MSI db")); let mut msi_get_property_call_count = 0usize; let mut res; let mut req_status; let mut buff = [0u8; BUFFER_SIZE]; res = 0u32; req_status = 234u32; // ERROR_MORE_DATA while (WIN32_ERROR(req_status) == ERROR_MORE_DATA || res == 0) && msi_get_property_call_count < 5 { res = buff.len() as u32; req_status = MsiGetPropertyA( h_install, PCSTR::from_raw(property_name), PSTR::from_raw(buff.as_mut_ptr()), Some(&mut res as *mut u32), ); if msi_get_property_call_count > 0 && WIN32_ERROR(req_status) == ERROR_MORE_DATA { // Register the occurrence of a known race condition in MSI custom_action_log(format!("WARN: Multiple calls to MsiGetPropertyA ({msi_get_property_call_count}) returned ERROR_MORE_DATA.").as_str()); } if res == 0 { custom_action_log(format!("WARN: MsiGetPropertyA returned 0 bytes for property {property_name_str}.").as_str()); std::thread::sleep(Duration::from_millis(10)); } msi_get_property_call_count += 1; if res as usize > BUFFER_SIZE { custom_action_log(format!("Custom action buffer size is too small: Needed {res}/available {BUFFER_SIZE}.").as_str()); return Err(ERROR_INSTALL_FAILED.0); } } if ERROR_SUCCESS != WIN32_ERROR(req_status) { custom_action_log(format!("Failed to retrieve user name from MSI:WIN_32ERROR {:?}, req_status: {req_status}", WIN32_ERROR(req_status)).as_str()); return Err(ERROR_INSTALL_FAILED.0); } let property = std::str::from_utf8_unchecked(&buff[..res as usize]); Ok(property.to_string()) } 十分之二或三我在自定义操作日志中收到以下内容: 2023-11-14 13:29:47 - Retrieve CustomActionData from MSI db 2023-11-14 13:29:47 - WARN: MsiGetPropertyA returned 0 bytes for property CustomActionData. 2023-11-14 13:29:47 - WARN: MsiGetPropertyA returned 0 bytes for property CustomActionData. 2023-11-14 13:29:47 - WARN: MsiGetPropertyA returned 0 bytes for property CustomActionData. 2023-11-14 13:29:47 - WARN: MsiGetPropertyA returned 0 bytes for property CustomActionData. 2023-11-14 13:29:47 - WARN: MsiGetPropertyA returned 0 bytes for property CustomActionData. 2023-11-14 13:29:47 - service_account CustomActionData data retrieved from MSI db. 2023-11-14 13:29:47 - TROUBLESHOOTING: CustomActionData: 2023-11-14 13:29:47 - CustomActionData property is not in the expected format 成功运行会产生以下日志: 2023-11-14 13:28:48 - Retrieve CustomActionData from MSI db 2023-11-14 13:28:48 - service_account CustomActionData data retrieved from MSI db. 2023-11-14 13:28:48 - TROUBLESHOOTING: CustomActionData: ,,C:\MyApp,NT Authority\Local Service 请帮忙:-) 我通过改变策略解决了自己的问题。长话短说,自定义操作现在是一个独立的可执行文件,其中参数通过命令行传递,而不是在 DLL 中实现并由 wix 安装程序应用程序加载的自定义操作。 Wix 支持在不记录命令行参数的情况下执行此操作,因此不会记录密码。基本上,我遵循了这篇文档文章,特别是WixSilentExec风格。 我对为什么从 Wix 直接访问 dll 变得不稳定的理解是,通过 MSI 数据库中的 CustomActionData 属性传递参数值的机制很容易出现竞争条件。

回答 1 投票 0

元素创建后立即触发转换

我正在尝试创建一个动作,其中创建一个div并立即向上“浮动”直到它离开屏幕。 为了实现这一点,我尝试使用 CSS 过渡,这将完全...

回答 3 投票 0

“/usr/bin/python”中的错误:双重释放或损坏(出):0x00007f7c3c017260

我正在使用(优秀的)Flask 框架用 Python 开发一个网站。在后端代码中,我使用 APScheduler 每分钟运行一些类似 cron 的作业,并使用 Numpy 来计算一些标准

回答 2 投票 0

inotifywait:处理旧事件时触发新事件

我有以下循环: 而 inotifywait -qq --event close_write "$filebs" "$filevp";做 做一点事() 完毕 问题是,在某些时候,会触发两个事件......

回答 2 投票 0

没有块级ThreadFence的随机缩减结果

我正在为 Tree Reduction 编写一个简单的内核,它将 blockDim.x 元素的多个切片复制到每个块的共享内存数组中。 每个块映射的切片数量是一个com...

回答 1 投票 0

如何避免 Cuda 竞争条件,以并行比较哈希图中的值

我有一个问题,在 2D 空间 (x,y) 中我有很多不同大小的点。具有结构 (x,y, size) 的数组表示此空间。我想将此空间缩减采样到某个特定的...

回答 1 投票 0

如何在 mysql laravel 中处理股票读取和更新中的竞争条件?

我正在开发一个软件,其中多个销售订单来自 Excel 文件。我的问题是销售订单的多个 csv 文件上传到我的系统。系统在作业中解析这些文件。我...

回答 1 投票 0

带有版本控制的竞争条件

在我使用 Postgresql 的应用程序中,订购产品过程可能会导致竞争条件。让我描述一下我的案例。我的数据库中有三个表: 第一个是“产品”选项卡...

回答 1 投票 0

C# 幽灵般的远距离动作 --await 块中的值类型发生变化?

我对用 C# 编写一个重要的项目(在 Godot 4 平台上使用)还很陌生,但对一般编程不太熟悉。 我有以下片段: 公共异步任务请求确认事件(uint

回答 1 投票 0

使用条件变量的正确方法是什么?

我的作业提供了运行时使用大量 CPU 的代码。目标是通过在生产者消费者问题中实施条件变量来减少该数量。 我

回答 1 投票 0

更新环境变量 PATH 时是否可能出现竞争条件?这是可以避免的吗?

如果在 Windows 上运行的两个或多个应用程序尝试同时将文件夹名称附加到环境变量 PATH,是否可能会出现竞争条件,使得其中一个值

回答 2 投票 0

C#中线程同步的问题

我正在用 C# 创建一个 Discord 机器人,它显示队列中的用户列表。该列表每 30 秒更新一次。 我有两个线程,主线程和我创建的线程。在主线程中,我有

回答 1 投票 0

pthread 在释放锁之前被取消

我对 C 中的多线程还很陌生。我编写了一个简单的程序,它执行以下操作: main 函数启动多个线程,每个线程等待使用 con...

回答 1 投票 0

如何保持短暂状态和 Riverpod 状态同步(使用计时器时)

我正在尝试编写一个 flutter 应用程序,它可以让您使用 HTTP 请求远程控制多个玩具。控制元素始终可见,用户可以在可用的之间自由更改...

回答 1 投票 0

单线程C++程序中的同步

我有一个程序,其主循环接收消息。 其中一条消息是 registersReady。比我第一次想读取寄存器状态。结果将通过 mai 作为事件提供...

回答 1 投票 0

ASP.net MVC 5 多语言:语言资源有时无法一致工作

我正在使用资源管理器在 ASP.NET MVC 5 应用程序中加载基于 threadUI 区域性的资源。我在 Application_AcquireRequestState 事件中设置线程区域性,当前区域性按您保存...

回答 2 投票 0

多语言应用程序中的ASP.NET资源管理器RaceCondition

我们使用资源管理器在 ASP.NET MVC 4 应用程序中加载基于线程 UI 区域性的资源。我们将线程区域性设置如下: protected void Application_AcquireRequestState(对象发送...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.