标签: thread-safety

如何正确读取Interlocked.Increment'ed int字段?

假设我有一个非易失性的int字段,以及一个它Interlocked.Increment的线程.另一个线程可以直接安全地读取它,还是读取也需要互锁?

我以前认为我必须使用互锁读取来保证我看到当前值,因为毕竟,该字段不是易失性的.我一直在Interlocked.CompareExchange(int, 0, 0)努力实现这一目标.

但是,我偶然发现了这个答案,这表明实际的普通读取总会看到Interlocked.Incremented值的当前版本,并且因为int读取已经是原子的,所以不需要做任何特殊的事情.我还发现了Microsoft拒绝Interlocked.Read(ref int)请求的请求,进一步表明这完全是多余的.

那么我能真正安全地阅读这样一个int领域的最新价值Interlocked吗?

.net c# multithreading thread-safety

56
推荐指数
4
解决办法
1万
查看次数

如何停止通过实现runnable接口创建的线程?

我通过实现runnable接口创建了类,然后在我的项目的其他一些类中创建了许多线程(将近10个).
如何阻止其中一些线程?

java multithreading thread-safety

55
推荐指数
4
解决办法
15万
查看次数

HttpSession线程是否安全,是否设置/获取属性线程安全操作?

此外,正在设置的对象是否必须是线程安全的,以保证我们知道会话中存储的对象的状态是什么.

此外,我正在网上阅读一些建议使用:

synchronized(session) {
  session.setAttribute("abc", "abc");
}
Run Code Online (Sandbox Code Playgroud)

这是一个有效的建议吗?

java session synchronized thread-safety

53
推荐指数
3
解决办法
4万
查看次数

DbContext线程安全吗?

我想知道DbContext该类是否是线程安全的,我假设它不是,因为我正在执行并行访问DbContext我的应用程序中的并行线程,我得到了许多锁定异常和其他看起来可能与线程相关的东西.

直到最近我还没有收到任何错误...但直到最近我还没有访问DbContext线程.

如果我是对的,人们会建议什么作为解决方案?

c# thread-safety entity-framework-4.1

53
推荐指数
3
解决办法
4万
查看次数

Java中的volatile int是否是线程安全的?

intJava中的volatile是否是线程安全的?也就是说,可以安全地读取和写入而不锁定吗?

java multithreading volatile thread-safety

53
推荐指数
3
解决办法
3万
查看次数

Python内置容器是否是线程安全的?

我想知道Python内置容器(list,vector,set ...)是否是线程安全的?或者我是否需要为共享变量实现锁定/解锁环境?

python thread-safety

52
推荐指数
3
解决办法
2万
查看次数

如何确保实用静态方法的线程安全?

是否存在任何通用方法或规则出口,通过这些方式或规则可以确保在任何应用程序的各种Utility类中专门使用的静态方法的线程安全性.在这里,我想特别指出Web应用程序的线程安全性.

众所周知,使用不可变对象作为参数的静态方法是线程安全的,而可变对象则不是.

如果我有一个实用程序方法进行某些操作java.util.Date并且该方法接受一个实例java.util.Date,那么这个方法就不是线程安全的.那么如何在不改变参数传递方式的情况下使其线程安全?

public class DateUtils {

    public static Date getNormalizeDate(Date date) {
        // some operations
    }   
}
Run Code Online (Sandbox Code Playgroud)

这类是javax.faces.context.FacesContext可变的吗?将此类的实例传递给此类静态实用程序方法是否安全?

这个类的列表,其实例可以作为参数传递或不能作为参数传递,可能很长; 那么在编写此类实用程序类的代码时,我们应该记住哪些要点?

java oop static-methods utility thread-safety

52
推荐指数
7
解决办法
5万
查看次数

PHP线程安全吗?

  • PHP(从5.2开始)是否在Linux/UNIX上是线程安全的?
  • 是否可以将它与Apache Worker-MPM或Event-MPM一起使用?

到目前为止,我收集的事实尚无定论:

  • 大多数发行版中包含的默认二进制文件都禁用了ZTS,所以我知道,我必须重新编译它们.
  • 理论上,启用了ZTS的Zend Engine(核心PHP)是线程安全的.
  • 据说有些模块可能不是线程安全的,但我没有找到任何模块列表.
  • PHP FAQ与上面几乎相同.

你有什么经历?

这不仅仅是关于分段错误(Windows命名法中的"访问违规").线程安全还有很多.

php multithreading thread-safety

51
推荐指数
3
解决办法
4万
查看次数

C#数组是否安全?

特别是

  1. 创建一个函数以将数组和索引作为参数.
  2. 创建一个元素数组.
  3. 创建一个计数循环.
  4. 在新线程的循环内部,使用传入的索引器将对象的新实例分配给数组.

我知道如何管理线程等.我很想知道这是否是线程安全的做事方式.

 class Program
{
    // bogus object
    class SomeObject
    {
        private int value1;
        private int value2;

        public SomeObject(int value1, int value2)
        {
            this.value1 = value1;
            this.value2 = value2;
        }
    }

    static void Main(string[] args)
    {

        var s = new SomeObject[10];
        var threads = Environment.ProcessorCount - 1;
        var stp = new SmartThreadPool(1000, threads, threads);
        for (var i = 0; i < 10; i++)
        {
            stp.QueueWorkItem(CreateElement, s, i);
        }

    }

    static void CreateElement(SomeObject[] s, int index)
    { …
Run Code Online (Sandbox Code Playgroud)

c# arrays multithreading thread-safety

51
推荐指数
4
解决办法
3万
查看次数

SynchronizedCollection <T>和其他并发集合有什么区别?

除了Concurrent Collections是命名空间还是一个类之外,命名空间中SynchronizedCollection<T>的并发集合如何System.Collections.Concurrent相互不同SynchronizedCollection<T>

SynchronizedCollection<T>并发集合中的所有类都提供了线程安全的集合.我如何决定何时使用其中一个,为什么?

c# collections .net-4.0 thread-safety concurrent-collections

51
推荐指数
2
解决办法
2万
查看次数