cost 162 ms
以下为可重入锁编写的代码是否容易受到指令重新排序错误的影响? - Could the following code written for a Reentrant Lock be susceptible to an instruction reordering error?

我最近在学习无锁并发中的可重入锁时遇到了以下代码: 但是,我不确定释放栅栏调用是否不排除在它之前的线程中进行后续 memory 操作的可能性,以及获取栅栏是否排除在它之后进行更早的 memory 操作的可能性。 如果他们不这样做,从技术上讲,优化可能会导致这条线吗? 在调用之前在同一线程上完成并成 ...

重入攻击实现 - Reentrancy attack implementation

我正在尝试解决重入攻击 ethernaut 挑战。 这是目标合约的可靠性代码: 我的计划是: 从另一个合约捐赠给 Reentrance 合约。 从我创建的合约中的函数内部以及从我的合约中的回退函数调用 withdraw 函数。 目标是执行 足够的时间来清空重入合约的余额,同时跳过下面的代码。 这是我 ...

如何“.call”另一个使用“.call”的合约的 function - How to ".call" a function of another contract which uses ".call"

所以,我正在学习高级智能合约开发。 前两天学习了Reentrancy attacks,然后我也创建了两个合约Protocol.sol (vulnerable contract)+ Hacker.sol (attacker contract)来测试我的知识。 我能够顺利地执行所有操作,我在我的Hac ...

Dispatcher.Invoke 后资源的线程访问控制不起作用 - Thread access control on resource after Dispatcher.Invoke not working

我正在努力解决与阻止通过同一线程(UI 线程)访问资源相关的问题。 这是场景。 用户点击屏幕上的 object。 基于选定的 object,绘制 plot(并将 class 的成员变量设置为选定的对象)。 对选定 object 的 position 的更新是通过该 object 上的 Collect ...

ARM C 中的可重入函数是否可能存在寄存器值损坏? - Is register value corruption a possibility on reentrant functions in ARM C?

由于我已经研究了几个小时,所以也许我想太多了。 我现在已经很清楚重入的概念和规则了,但是由于我是为 ARM(Cortex-M4)做这件事的,所以我想到了另一个问题,这个问题没有涉及到我发现的重入资源,也没有涉及到它的规则。 我了解以下功能可从重入规则中重入: 这里的问题是,至少在我已经验证过的 ...

中断函数的执行 - Interrupting a function's execution

我找到了一篇解释重入问题的好文章,但我很想知道在单线程环境中可以通过哪些方式中断 function。 如果我们在 memory 中创建了一个具有一些初始值的实例,然后我们稍后调用了更新 function,那么上面的更新 function 将如何在执行过程中以这种方式中断,以便 model 名称收到一 ...

重新进入时取消异步方法的模式 - Pattern for cancel async method on reentry

我想在重入时取消异步 function,这样工作就不会堆积起来并防止不需要的工作。 例如,我的文件扫描最多需要 8 秒,但是当我在 UI 中更改文件夹时,应该取消旧的 function。 我看到了带有CancellationToken的示例,但在我看来代码太多了。 我的方法是这样的,它似乎有效,但它 ...

为什么可以在可重入 function 中使用 sig_atomic_t - Why can sig_atomic_t be used in a reentrant function

我在 Linux 上开发 C++ 已经很久了。 当我开发一些处理消息/任务队列的独立模块时,我总是处理SIGINT信号以避免消息/任务丢失。 这是我的代码示例: 好吧,这段代码很简单:如果信号SIGINT被捕获,则停止接收消息,处理队列中剩余的所有消息并返回。 否则,代码将停留在无限长的状态。 我 ...

在单线程环境中拥有 function 可重入的意义何在? - What is the significance of having a function reentrant in a single-threaded environment?

在单线程环境中拥有 function 可重入的意义何在? 我了解到,要使 function 可重入,它需要能够被中断、由另一个线程进入并恢复,而不会产生任何未定义或不希望的副作用。 我读了这个问题Threadsafe vs re-entrant 。 但目前尚不清楚这如何在代码中实际发生: 如果您使 ...

基于插件的程序中的 FFTW 可重入性 - FFTW reentrancy in plug-in based programs

我正在开发一个跨平台应用程序(Win / Mac / Linux)。 此应用程序将我无法控制的插件加载为动态库,这些插件可能会做各种事情,主要是音频和图像处理。 其中一些插件可能使用 FFTW 作为其实现细节的一部分。 (这不是一个假设的案例——我已经有了其中的三个)。 但是,FFTW 的 fun ...

TK spinbox 进入更新 GUI 的无限循环 - TK spinbox goes into infinite cycle of updating GUI

我无法修复spinbox的奇怪行为。 具体来说,我需要通过-command和update在更改旋转框的值时更新 GUI。 稍微简化的代码如下: 问题是当点击旋转框的箭头(更多的“向上”而不是“向下”,但我没有发现任何规律)然后按下 10-20 秒时,旋转框进入无限循环更新,正如puts显示。 ...

哪些标准 C++ 函数和类型支持重入? - Which standard c++ functions and types support reentrancy?

C++ 标准(c++14 以及当前的工作草案)指出 除非在本文档中明确指定,否则 C++ 标准库中的哪些函数可以递归重新输入是实现定义的。 除了std::recursive_mutex之外,我在标准中找不到任何类型或函数,其中明确指定可以安全地递归重新输入。 即使对于 std::recur ...

同步方法中的可重入性 - Reentrancy in synchronized methods

同步方法是否可重入? 我有这个代码: 假设两个线程(线程 A 和线程 B)同时尝试访问m1() 。 线程 A首先获取锁。 一段时间后,线程 A调用m2() ,它也在同一对象上同步。 因为我不想做任何猜测,所以有人可以告诉我:有没有保证线程 A调用m2()时会发生什么? 我的意思是一旦线程 A ...

yydestruct 太少 arguments 到 function 调用(flex&bison) - yydestruct too few arguments to function call (flex&bison)

我正在尝试制作一个可重入的 flex&bison 解析器,但我遇到了这个奇怪的错误: 我可以看到 Bison 生成的代码是这样的: 和 我的代码是这样的: Flex代码如下: 我真的迷路了。 为什么野牛不将scanner插入yydestruct尽管在yyparse中明确使用它? ...

推断程序是否要使用线程 - Deduce if a program is going to use threads

线程安全或线程兼容的代码是好的。 但是,在某些情况下,如果知道程序不会使用线程,则可以以不同的方式实现事物(更简单或更有效)。 例如,我曾经听说std::shared_ptr之类的东西可以使用不同的实现来优化非线程情况(但我找不到参考)。 我认为历史上某些实现中的std::string可以在非线程代 ...

使用 INotifyPropertyChanged 时防御重入和不变违规? - Defend Against Reentrancy and Invariant Violations When Using INotifyPropertyChanged?

使用INotifyPropertyChanged时存在重入错误的风险,因为PropertyChanged事件处理程序可以直接或间接调用发送方的方法。 因为典型的实现会在分配属性后立即引发这些事件,所以这是整个方法中重入点的隐藏来源。 任何时候分配财产时,都需要防止重入。 此外, PropertyC ...

Reentrant Bison/Flex,如何获取yyscan_t的每个实例的错误信息 - Reentrant Bison/Flex, how to get error message for each instance of yyscan_t

我正在尝试创建一个程序,该程序使用带有 flex/bison 的多线程来解析大量数据。 我对如何以可重入的方式获得yyerror有点迷茫。 在之前使用 bison/flex 进行的非重入测试中,我使用extern来获得yyerror 现在我正在尝试使用可重入野牛和 flex 来实现这一点。 ...


 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM