问题标签 [reentrancy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
396 浏览

android - UriMatcher 类的 match(Uri) 是可重入的吗?

我看到的如何制作 a 的示例ContentProvider都使用了UriMatcher#match(Uri)insertqueryupdate方法delete中的方法来轻松处理内容提供​​者响应的所有 URI 模式(例如:http: //developer.android.com/资源/samples/NotePad/src/com/example/android/notepad/NotePadProvider.html)。直到今天,当我在ContentProviderAPI 文档中注意到insertqueryupdatedelete“可以 [all] 从多个线程调用”时,这对我来说似乎还可以。此外,UriMatcher文档没有说明线程安全或是否match可重入。

我是否需要担心在我的、、和的实现中使用match的共享static实例上的同步调用?UriMatcherinsertqueryupdatedelete

0 投票
1 回答
905 浏览

c++ - X 平台可重入 wcstok()?

现在我正在寻找wcstok()GCC 和其他编译器(如果有的话)已知的可重入版本。

到目前为止,我使用wcstok_s()的只是 MSVC,我还需要在其他平台上编译代码。虽然有些页面表明wcstok_r()我在 GCC 标头中找不到它。其他(man)页面strtok_s()没有提到特定的宽字符版本,但提到它据说仅用于多字节字符串(?)。

所以,我愿意接受建议。编写我自己的包装器/版本只是最后的解决方案。

为 aschepler 编辑:由于 - 无法编译的示例代码too many arguments尽管毫无意义,但仍应编译:

0 投票
3 回答
2829 浏览

c++ - glibc sprintf 可以在可重入函数中使用吗?

如果 sprintf 在本地缓冲区中写入,我可以在可重入函数中使用它吗?像这样的东西:

0 投票
1 回答
578 浏览

linux - __alloc_pages_slowpath() 是否可重入安全?

对 __alloc_pages_slowpath() 的调用能否在同时调用 __alloc_pages_slowpath() 的设备中断中幸存下来,或者第二次调用是否破坏了第一次调用?

我在 XFS 文件系统上看到一个常规文件的程序调用 read(2)。内核堆栈跟踪显示,最终调用了 __alloc_pages_slowpath(),然后发生了 e1000e IRQ,最终也调用了 __alloc_pages_slowpath(),然后几乎立即发生了日志消息“fooprog: page allocation failure.order:0, mode:0x4020”。

整个堆栈跟踪可以在这里看到:https ://gist.github.com/790577

0 投票
2 回答
392 浏览

c# - C# 尝试重入锁定某些死锁的、明显的错误

很想知道是否有其他人看到过这个问题。我有一个锁定静态声明对象的应用程序,这样:

do-some-stuff 做了各种事情,我称之为尝试锁定同一个锁的例程之一。线程死锁。

我的猜测是,这个问题在某种程度上与我对反射的使用有关:在调用堆栈的中途,我通过在类定义中查找方法并调用 .Invoke() 来调用方法。结果的调用堆栈是这样的:

因此,初始调用lock(Group.IsisGroups)是在堆栈的顶部方法中,ReliableSender.StartGroupReader当它在底部方法 doLookup 中调用 lock 时,代码会死锁。这些[External Code]块来自我调用反射Invoke()方法的地方,并且来自lock()导致事情死锁的调用。绝对是同一个对象被锁定,等等(当我的类被加载并且是类型时静态分配的对象,List<Isis.Group>当我添加和删除东西时,实际的 List 对象仍然存在。

关于可能导致这种情况的任何建议?

0 投票
2 回答
4532 浏览

concurrency - Tesseract(OCR 引擎)是可重入的吗?

我在四核处理器上使用 Tesseract 进行 OCR。为了提高速度,我想一次阅读 4 个单词,使用 4 个线程。从多个线程同时调用 Tesseract 是否安全?

注意:每个线程将处理不同的非共享图像。

注意:由于速度原因,用锁守卫是不行的。

0 投票
4 回答
80 浏览

sql - 是否可以在不明确创建新线程的情况下在 dotnet 中引入多线程?

我有一个需要处理的数百个项目的循环。

通过有条件地设置一个全局 SQLConnection 来处理每个项目,其中使用此 SQLConnection 作为处理的一部分来处理项目。

因此,不允许并行处理这些项目是至关重要的。

我很欣赏这不是好的设计,我希望尽快纠正它。

然而,尽管我尽了最大努力,但似乎这段代码正在经历某种形式的多线程。不知何故,其中一项任务引发了异常。

此异常违反了外键约束,但表明它正在针对没有业务连接的 SQLConnection 进行操作。

我自然对此感到担忧,但据我所知,此应用程序中没有多线程代码。

我想知道是否可以在不显式创建新线程的情况下引入多线程

编辑:

  • VB.Net 3.5SP1
  • 控制台应用程序 + 类库
  • 偶尔调用 Web 服务
  • 进行 SQL 调用
  • 没什么别的。没有 Winforms,没有 WPF。
0 投票
5 回答
3605 浏览

c++ - memcpy() 函数是可重入的吗?

我在信号处理程序中调用了一些 C++ 函数,我的程序因分段错误而终止。当我检查 gdb 时,memcpy() 函数是我获得 SIGSEGV 的地方。我想知道 memcpy() 是否是可重入函数?

0 投票
1 回答
708 浏览

c - Flex/Bison 多遍类解析

我正在为玩具 OO 语言编写编译器。我正在用 C 语言编写它,使用 Flex 和 Bison。

考虑以下语法:

我当前的代码会抱怨在 MyFunc 中,m_p 尚未声明(有充分的理由)。因此,我得出的结论是,我需要一种多遍解析技术——类似于:

第一遍 - 处理变量声明

第二遍 - 处理函数定义

首先 - 这是解决问题的最佳方法吗?还有其他我应该研究的方法吗?其次 - 如果这是一个有利的解决方案,我会使用可重入词法分析器/解析器来实现它吗?

谢谢

0 投票
2 回答
1589 浏览

objective-c - 在目标 c 或 c 中需要读写锁

我似乎找不到任何目标 C 的读写锁。这是给 iphone 开发的。有任何想法吗?本文的附录有一些代码,但不完整。