thread-safety相关内容

在 Java 中使用 synchronized (Thread.currentThread()){...} 的目的是什么?

我在我们的项目中遇到了以下代码: 同步的 (Thread.currentThread()){//一些代码} 我不明白在 currentThread 上使用同步的原因. 有什么区别 同步的 (Thread.currentThread()){//一些代码} 只是 //一些代码 你能举个例子说明区别吗? 更新 更详细的这段代码如下: 同步的 (Thread.current ..

请解释 Java 内存模型中说明的初始化安全性

有人可以按照 Java 内存模型的要求解释 初始化安全 吗? final 字段如何帮助实现初始化安全? 构造函数在确保初始化安全方面扮演什么角色? 解决方案 初始化安全性提供了一个外部线程在其完全构造(初始化)状态下可以看到的对象.前提是对象不应过早发布,即.在它的构造函数中.一旦确保了这一点,JMM 就要求声明为 final 的字段具有某些行为.首先,所有 final 对象字段都保证 ..

如何确保我不会同时在两个线程之间共享同一个套接字?

我有一个处理套接字的代码,我需要确保我不会在两个线程之间共享同一个套接字.在下面的代码中,我有一个后台线程,它每 60 秒运行一次并调用 updateLiveSockets() 方法.在 updateLiveSockets() 方法中,我迭代了我拥有的所有套接字,然后通过调用 SendToQueue 类的 send 方法开始一个一个地 ping 它们并根据回复,我将它们标记为活的或死的. 现 ..

JAVA线程(不同栈)同步

我有一个关于由多个线程执行的代码同步的问题: 据我所知,每个线程都有自己的堆栈,因此,非静态变量存在于每个线程的内存中的不同位置(对于 X 个线程,有 X 个堆栈包含所有非静态变量).那么为什么需要同步任何东西呢? 我的意思是,如果线程执行的代码包含某个类变量 v1,那么每个线程都有自己的 v1“实例"(不同的内存地址),并且没有其他线程可以“触摸"它……不是是吗? 解决方案 ..
发布时间:2022-01-22 12:34:01 Java开发

Cocos2d 和并发:如何正确停止场景之间的动画

我有一个 GameScene(这里称为 ShooterScene),然后我退出到 MainMenu.我确实使用加载到纹理缓存中的精灵表.有各种动画正在进行(背景元素、敌人、玩家等......).几个月来,我遇到了一个问题,即 Enemies 的“setTexture"方法断言失败.我通过在替换场景之前暂停共享 CCDirector 解决了这个问题.这具有停止动画的效果.但是我只部分解决了这个问题. ..

C中的多写线程安全队列

我正在使用 pthreads 开发一个多线程 C 应用程序.我有一个写入数据库的线程(数据库库只能在单个线程中安全使用),还有几个线程正在收集数据,处理它,然后需要将结果发送到数据库线程进行存储.我在提到过在 C 中创建一个多写入器安全队列是“可能的",但是我看到的每个地方都只是说它“对于这个例子来说太复杂了"并且仅仅演示了一个单写入器安全队列. 我需要以下东西: 高效插入和移除.我假 ..
发布时间:2022-01-21 11:36:48 其他开发

pthread 同步阻塞队列

我正在寻找使用 pthread 同步语义的 C 中线程安全阻塞队列(多生产者/消费者)的推荐实现. 解决方案 试试 APR 队列.它被 apache web 服务器使用并且经过很好的测试. http://apr.apache.org/docs/apr-util/1.3/apr__queue_8h.html ..
发布时间:2022-01-21 11:33:03 其他开发

GCC中的函数静态变量是线程安全的吗?

在示例代码中 void foo(){静态酒吧 b;...} 用 GCC 编译是否保证 b 将以线程安全的方式创建和初始化? 在 gcc 的手册页中,找到 -fno-threadsafe-statics 命令行选项: 不要发出额外的代码来使用C++ ABI 中指定的例程本地线程安全初始化静力学.您可以使用此选项在代码中稍微减少代码大小不需要是线程安全的. 这是否意味着本地静态变 ..
发布时间:2022-01-18 23:17:20 C/C++开发

C# 委托是线程安全的吗?

如果您有一个带有委托成员变量的类实例,并且多个线程调用该委托(假设它指向一个长时间运行的方法),是否存在任何争用问题? 您是否需要锁定委托,或者每个线程调用委托指向的方法是否安全,因为每个线程都有自己的调用堆栈? 解决方案 关于委托的调用,答案是肯定的. 调用委托是线程安全的,因为委托是不可变的.但是,您必须首先确保委托存在.此检查可能需要一些同步机制,具体取决于所需的安全级别 ..
发布时间:2022-01-18 12:21:49 C#/.NET

同一应用服务中的 Azure 函数是否在同一实例中运行

我有一个场景,其中我的一个类有一个静态成员,我可以从函数应用程序设置其值.假设属于同一个应用服务计划的另一个函数应用也使用这个相同的类,并且还设置/依赖于静态成员的值.现在,如果这两个功能应用程序从不同时运行,我们没有问题.此外,如果它们不在同一个实例下运行,那么我们也没有问题,因为每个正在运行的实例都有自己的类定义. 我的问题是,来自同一个应用服务的每个函数应用是否运行在不同的实例上? ..
发布时间:2022-01-17 16:41:21 其他开发

WPF - Task.Run(() => window.ShowDialog) 失败

我必须实现忙碌指示和进度报告.限制是,我必须使用提供的控件库,它提供了一个用于进度报告的窗口. 以下代码可以正常工作,但不会阻塞 UI,这在某些时候是必需的. 私有异步 void StartLongRunningTask2Sync() {var wndHandle = Application.Current.Windows.OfType().SingleOrDefault(x => x.I ..
发布时间:2022-01-17 10:57:28 其他开发

Struts2 线程中的拦截器不安全吗?

我知道 Struts2 Action 类是线程安全的,因为这些操作被放入了值堆栈中.值堆栈又是动作上下文的一部分.由于动作上下文是线程本地的,所以存储在动作上下文中的值(包括值堆栈)对于每个线程都是唯一的.所以,Action 是线程安全的. 但是考虑一下拦截器:它们真的很有用,它们为程序员完成了所有那些繁琐的小工作......比如验证、获取参数值等.但要考虑的是:拦截器可以在多个之间共享要求 ..
发布时间:2022-01-16 22:03:14 Java开发

用户会话在 Tomcat 上搞混了

我们在 IIS7.5 之后使用 Tomcat 6.29,带有 spring、hibernate 和 struts2 框架.我们现在开始注意到服务器会话变得混乱,尤其是在 Ajax 请求中. 有关问题的更多详细信息 用户 1 请求 page1,用户 2 请求 page2.但是 user1 获得了 page2 服务,而 user2 获得了服务器 page1. 会话 ID 也在发生变化,但 ..

boto 库是线程安全的吗?

特别是我对使用来自多个线程(放置、获取、更新等)的 DynamoDB 表对象感兴趣.如果这不安全,那么是否有一种安全的方法(即每个线程可能有一个表对象)?任何其他有关在 boto 中使用线程的问题或技巧表示赞赏. 解决方案 boto 库使用的 httplib 从来没有,据我所知仍然不是线程安全的.解决方法是确保每个线程都创建自己的与 DynamoDB 的连接,并且您应该很好. ..
发布时间:2022-01-15 17:28:30 Python

lucene 良好实践和线程安全

我正在使用 lucene 来索引文档并执行搜索,然后我立即删除它们.所有这些都可以被认为是一个有点原子的动作,包括以下步骤: index (writer) --> search (searcher) --> 按分数获取文档(读者)-->删除文档(读者) 这个动作可以由多个并发线程在同一个索引上执行(使用FSDirectory). 重要提示:每个线程处理一组单独的文档,因此一个线程 ..
发布时间:2022-01-15 12:30:52 Java开发

线程&Qt 应用程序中的事件循环

谁能解释线程和事件循环的区别,以及如何在 QT 应用程序中使用它. 我可以在哪里使用移动到线程并完成线程类? 解决方案 每个线程处理自己的事件循环,您通常无需担心 - 它会为您处理,除非您有特定的原因意味着要一个人呆着. QThread 是 Qt 提供的一个类,用于控制线程的操作.将对象“放入"该线程的方法是使用 moveToThread() 函数. 您不应该为了在线程内 ..
发布时间:2022-01-15 12:03:00 其他开发

是整数吗?线程安全吗?

我知道在 .Net 中所有 32 位类型(例如,int、bool 等)都是线程安全的.也就是说,不会有部分写入(根据规范). 但是,同样适用于 int?(可为空的 int)吗? 解决方案 这个问题措辞不佳,因此到目前为止的答案很混乱.问题应该是“是否对 int 类型的变量进行读写?保证是 atomic?" 不,绝对不是.规范在这一点上非常清楚: 以下数据类型的读写是原子的 ..
发布时间:2022-01-14 14:46:22 C#/.NET

带有子例程和函数的 Fortran OpenMP

免责声明:我很确定这已经在某个地方得到了回答,但是我和另一个人一直在努力寻找却无济于事. 我有一个看起来像这样的代码: 程序主!$omp 并行执行!$omp 私有的(一些东西) 共享的(其他东西)做 i=1,n...调用我的子程序(参数)...a=我的函数(更多参数)...ENDDO!$omp end parallel do结束程序SUBROUTINE mysubroutine(东西). ..
发布时间:2022-01-14 09:29:55 其他开发

PHP中的线程安全或非线程安全是什么?

我看到了不同的 PHP 二进制文件,比如非线程或线程安全的? 这是什么意思? 这些包有什么区别? 解决方案 需要并发方法的背景知识: 不同的 Web 服务器采用不同的技术来并行处理传入的 HTTP 请求.一种非常流行的技术是使用线程——也就是说,Web 服务器将为每个传入请求创建/专用一个线程.Apache HTTP Web 服务器支持多种模型来处理请求,其中一种(称为工 ..
发布时间:2022-01-13 16:27:28 PHP