reentrancy相关内容

VHDL 中的进程是可重入的吗?

VHDL 中的进程是否可能有两个或多个顺序运行? 如果另一个事件发生(在敏感信号列表上)而进程的顺序执行尚未完成,会发生什么? 是否有可能或者我的VHDL模型是完全错误的? 解决方案 进程运行时不会发生任何事件! 当一个进程被一个事件唤醒时,它运行到完成(“结束进程")或一个明确的“等待"语句,然后进入睡眠状态.从理论上讲,这需要零时间.这意味着如果您的流程中有循环,它们 ..
发布时间:2022-01-02 18:51:18 其他开发

SemaphoreSlim (.NET) 是否阻止同一线程进入块?

我已阅读 SemaphoreSlim SemaphoreSlim MSDN这表明 SemaphoreSlim 将限制一段代码一次只能由 1 个线程运行,如果您将其配置为: SemaphoreSlim _semaphoreSlim = new SemaphoreSlim(1, 1); 但是,它并不表示它是否会阻止相同线程访问该代码.这带来了异步和等待.如果在方法中使用 await,则控制离开该方 ..
发布时间:2021-12-27 23:47:43 C#/.NET

什么是可重入函数?

大多数 of 次,定义重入引用自维基百科: 计算机程序或例程是如果可以,则描述为可重入的安全在它之前再次调用之前的调用已经完成(即它可以安全地执行同时).为了可重入,一个计算机程序或例程: 不得持有静态(或全局)非常量数据. 不得将地址返回给静态(或全局)非常量数据. 必须只处理提供的数据由来电者提供. 不能依赖单例锁资源. 不得修改自己的代码(除非在它自己独特的线程中执行存储 ..
发布时间:2021-12-16 08:12:50 C/C++开发

为什么说 malloc() 和 printf() 是不可重入的?

在 UNIX 系统中,我们知道 malloc() 是一个不可重入的函数(系统调用).这是为什么? 同样,printf() 也被称为不可重入;为什么? 我知道重入的定义,但我想知道为什么它适用于这些函数.是什么阻止它们保证可重入? 解决方案 malloc 和 printf 通常使用全局结构,并在内部采用基于锁的同步.这就是它们不可重入的原因. malloc 函数可以是线程安 ..
发布时间:2021-12-15 00:02:20 服务器开发

多次使用DLL时,如何防止DLL引起问题?

彼得·杜尼奥(Peter Duniho)在评论中指出的此处,当我本应全神贯注于其他事物时,我却被束之高阁. 当我以一种形式使用Symbol.Barcode.Reader和Symbol.Barcode.ReaderData时,它们可以正常工作.我在文档但是,当我从使用条形码扫描代码的一种形式转换为也使用条形码扫描代码的另一种形式时,所有达拉斯都会崩溃.在第二种形式的启动时,我得到以下异常: ..
发布时间:2020-07-05 20:14:42 C#/.NET

信号处理程序中的格式化I/O

我想编写一个SIGSEGV处理程序,该处理程序将消息写入文件(FILE *).我听说fprintf不是可重入的,不应在信号处理程序中调用.是否有它的可重入版本,或提供可在信号处理程序中调用的格式化文件I/O的任何其他函数? 解决方案 否.根据C11标准的版本N1570的§ 7.14.1.1¶ 5: 如果[the]信号发生[…],则如果[…]信号处理程序调用标准库中除abort函数,_ ..
发布时间:2020-07-05 20:14:38 其他开发

pthread:销毁全局静态互斥量

此代码摘自Richard Stevens编写的UNIX环境中的第三版高级编程.这是如何制作getenv()的可重入版本的示例.这里仅出于学习目的对其进行演示. /* Copyright (c) W.R.Stevens */ #include #include #include #include exte ..
发布时间:2020-07-05 20:14:34 其他开发

用积分YYSTYPE使bison/flex解析器可重入

在按照步骤使我的bison/flex解析器进入最小程度的麻烦时,我遇到了麻烦. 问题似乎出在词法分析器中.由于所有解析器都是可重入的,因此我无法再直接分配yylval.相反,根据 Flex手册,我必须调用此函数: void yyset_lval ( YYSTYPE * yylvalp , yyscan_t scanner ); 但是问题是,YYSTYPE是整数类型.它不是动态分配的 ..
发布时间:2020-07-05 20:14:30 其他开发

VHDL中的过程是可重入的吗?

在VHDL中是否可以连续运行两个或多个进程? 如果未完成过程的顺序执行而又发生了另一个事件(在灵敏度信号列表上),将会发生什么? 是否可能或者我想到的VHDL模型完全错误? 解决方案 进程运行时不会发生任何事件! 当一个进程被事件唤醒时,它会运行到完成(“结束进程")或显式的"wait"语句,然后进入睡眠状态.从概念上讲,这需要零时间.这意味着,如果您的流程中存在循环,则 ..
发布时间:2020-07-05 20:13:25 其他开发

"ReentrantLock"的含义是什么?在Java中?

重入意味着锁定是在每个线程而不是每次调用的基础上获得的. 由于内在锁由线程持有,这是否意味着线程运行一次就等于调用基础? 谢谢,这似乎意味着:在线程中,如果调用过程函数doB的进程函数doA和doB也需要锁lockA时得到锁lockA,那么那里将是可重入的.在Java中,这种现象是在每个线程中获取的,所以我不需要考虑死锁吗? 解决方案 重入意味着锁定是在每个线程而不是每次调 ..
发布时间:2020-06-26 21:54:20 Java开发

SemaphoreSlim(.NET)是否阻止同一线程进入块?

我已经阅读了SemaphoreSlim的文档,则SemaphoreSlim将限制一段代码一次只能由1个线程运行. SemaphoreSlim _semaphoreSlim = new SemaphoreSlim(1, 1); 但是,它并不表示是否阻止相同线程访问该代码.这带来了异步并等待.如果在一个方法中使用了await,则控件将离开该方法,并在完成任何任务或线程时返回.在我的示例中,我使用 ..
发布时间:2020-06-21 19:02:08 C#/.NET

折返Flex和Bison问题

我正在学习如何一起使用可重入的Bison和Flex.我已经有了一个没有可重入功能的简单计算器.但是,当我激活可重入功能并进行必要的修改时,我无法使它正常工作. 这是代码: scanner.l %{ #include #include "parser.tab.h" %} %option 8bit reentrant bison-bridge %option w ..
发布时间:2020-05-25 01:07:10 其他开发

什么是可重入解析器?

有人可以向我解释吗?尤其是以下两者之间的区别: http://github.com/whymirror/greg 和前者是后者的可重入版本. 解决方案 最简单的是,可重入解析器不使用全局变量,因此可以同时具有多个活动实例(不一定与线程相关,但是这是我怀疑的主要用例. 但是,在更复杂的用例中,您可以拥有一个解析器,该解析器实际上可以解析同一源文档中的多种语言.例如,考虑一个JSP ..
发布时间:2020-05-25 00:59:02 其他开发

在此代码示例中,Java中的重新进入使我们免于陷入僵局..为什么,为什么?

我是Java和OOP的新手.我正在用Java阅读并发性,在第2章中,它讨论了可重入性.我不太了解如何发生僵局.有人可以打破这种情况,让我逐步了解细节吗? 先谢谢您. 如果内部锁未重入,则调用super.doSomething 将永远无法获取锁,因为它将 认为已经暂停,线程将永久停止 等待它永远无法获取的锁. public class Widget { public syn ..
发布时间:2020-05-14 01:54:57 Java开发

线程安全与异步信号安全

在APUP第12.5节中,提到: " 如果一个函数相对于多个线程是可重入的,那么我们说它是线程安全的.但是,这并没有告诉我们该函数相对于信号处理程序是否可重入." 我感到困惑的是,为什么一个函数是线程安全的,但可能不是异步信号安全的. 有例子吗? 谢谢 解决方案 通过使用互斥锁保护函数修改的状态,可以使该函数成为线程安全的.但是,这不是异步信号安全的,因为如果您调用 ..
发布时间:2020-05-14 00:02:39 其他开发

桂再入与托管等待

使用NotifyIcons时,我发现了重入问题.复制非常容易,只需在表单上放置一个NotiftIcon,然后单击事件应如下所示: private bool reentrancyDetected; private void notifyIcon1_MouseClick(object sender, MouseEventArgs e) { if (reentrancyDetected) ..
发布时间:2020-05-13 23:54:49 C#/.NET

应用程序GetMessage甚至在MessageBox期间也可以吗?

在处理WM_TIMER时,我打电话给 MessageBox .结果,出现一个带有计时器频率的消息框.因此,我相信即使在 MessageBox 期间,该应用程序仍试图继续处理已排队/未排队的消息. 我说得对吗? 我知道,根据MSDN,当应用程序将消息发送到发送线程之外的其他线程时,发送线程将尝试处理在 SendMessage 返回之前收到的非排队消息- -即在目标线程回复之前. 除 ..
发布时间:2020-05-09 01:20:27 其他开发

C语言中的重入函数和递归函数有什么区别?

在C语言中,我了解递归函数,但听说过重入函数. 那是什么?它们之间有什么区别? 解决方案 如果函数支持同时“执行"多个执行线程,则该函数是可重入的.这可能是由于实际的多线程,并且我在下面使用了这种情况,或者是由于其他发布者指出的其他情况.多线程是第一个想到的,也许也是最容易理解的,所以我专注于这种情况. 这意味着该函数不能使用静态的“全局"数据,因为该数据随后将被两个(或多个)并行 ..
发布时间:2020-04-27 03:35:54 其他开发