thread-safety相关内容
我正在尝试在 C# 中创建线程安全属性,并且我想确保我在正确的路径上 - 这就是我所做的 - private readonly object AvgBuyPriceLocker = new object();私人双 _AvgBuyPrice;私人双 AvgBuyPrice{得到{锁定 (AvgBuyPriceLocker){返回_AvgBuyPrice;}}放{锁定 (AvgBuyPriceLo
..
这是一个 C# 的详细问题. 假设我有一个带有对象的类,并且该对象受锁保护: Object mLock = new Object();MyObject 属性;公共我的对象我的财产{得到 {归还财产;}放 {财产=价值;}} 我希望轮询线程能够查询该属性.我还希望线程偶尔更新该对象的属性,有时用户可以更新该属性,而用户希望能够看到该属性. 下面的代码会正确锁定数据吗? Object
..
我有一个链表samples: protected LinkedList样本 = 新的 LinkedList(); 我将元素追加到线程 1 中的列表中,如下所示: this.samples.offer(data); 我正在第二个线程中从中检索元素,如下所示: public RawDataset retrieveSample() {返回 this.samples.poll();} 这会被认
..
Python 流行的Requests 库在其主页上被认为是线程安全的,但没有提供更多细节.如果我调用 requests.session(),我可以像这样安全地将这个对象传递给多个线程: session = requests.session()对于 xrange(thread_count) 中的 i:线程.线程(目标=目标,args=(会话,),夸格={}) 并在多个线程中使用相同的连接池发出请
..
我使用 VS 2008 (c#) 的“添加 Web 引用"功能创建了一个 Web 服务代理. 生成的类派生自SoapHttpClientProtocol 我可以在单例中只存储一个代理实例吗?它是线程安全的吗?调用之间是否存在阻止我执行此操作的状态? 解决方案 没有.它不是线程安全的.客户端必须处于打开状态才能启用呼叫.一个简单的场景,一个线程执行 client.Close()
..
在本文中:http://msdn.microsoft.com/en-us/magazine/cc164015.aspx 作者声明System.Threading.Timer 不是线程安全的. 从那以后,这在博客上重复出现,在 Richter 的书“CLR via C#"中,关于 SO,但这从来没有道理. 此外,MSDN 文档保证“这种类型是线程安全的." 1) 谁说真话?
..
我有一个函数,我想每 x 秒调用一次,但我希望它是线程安全的. 我可以在创建计时器时设置此行为吗?(我不介意我使用哪个 .NET 计时器,我只是希望它是线程安全的). 我知道我可以在我的回调函数中实现锁,但我认为如果它在计时器级别会更优雅. 我的回调函数和环境与 UI 无关. [编辑 1]我只是不希望我的回调函数中有多个线程. [编辑 2]我想将锁定保持在计时器级别内
..
我有一个后台线程加载图像(从磁盘或服务器),目标是最终将它们传递给主线程进行绘制.当第二个线程使用 VCL 的 TGIFImage 类加载 GIF 图像时,这个程序有时在线程中每次执行以下行时会泄漏几个句柄: m_poBitmap32->Assign(poGIFImage); 也就是说,刚打开的 GIF 图像正在分配给线程拥有的位图.这些都不与任何其他线程共享,即完全本地化到线程.它与时间有关
..
基本上,我正在处理这个: var data = input.AsParallel();列表output = new List();Parallel.ForEach(data, line => {String outputLine = "";//** 用“line"做一些事情并将结果存储在“outputLine"中**//此外,还有一些用于更新 UI 的 this.Invoke 语句输出.添加(输
..
我在使用基本的 comm 和 group MPI2 方法方面有相当多的经验,并且使用 MPI 做了相当多令人尴尬的并行模拟工作.到目前为止,我已经构建了我的代码,使其具有一个调度节点和一堆工作节点.调度节点有一个将与模拟器一起运行的参数文件列表.它使用参数文件为每个工作节点播种.工作节点运行他们的模拟,然后请求调度节点提供的另一个参数文件.运行完所有参数文件后,调度节点会先关闭每个工作节点,然后再
..
我们正在使用 BindingSource 绑定一个 DataGridview.所以在主线程中我们是这样给出的. class1BindingSource = new BindingSource();class1BindingSource.DataSource = class1List;this.dataGridView1.DataSource = class1BindingSource; 之后
..
有谁知道如何将多个参数传递给 Thread.Start 例程? 我想过扩展类,但是C#Thread类是密封的. 我认为代码如下所示: ...线程标准TCPServerThread = new Thread(startSocketServerAsThread);标准服务器线程.开始(编排器,初始化成员平衡,参数,60000);...}static void startSocketSer
..
问题已经在之前发布,但没有提供真实的例子作品.因此,Brian 提到在某些条件下,AssertionError 可能发生在以下代码中: 公共类持有人{私人国际n;公共持有人(int n){ this.n = n;}公共无效 assertSanity() {如果 (n!=n)throw new AssertionError("此语句为假");}} 当持有人像这样不正确地发布时: class s
..
请参阅此答案.它说: 六个非常糟糕的例子; ... 锁定可变字段.例如同步(对象){ 对象 = ...;} 锁定可变字段有什么问题?如果 object 被声明为 final 但不是一个不可变的类怎么办? 解决方案 这是个坏主意,因为如果另一个线程更改了临界区中的引用,线程将不再看到相同的引用,因此它们不会同步在同一个对象上,从而不受控制地运行.示例: 同步(锁
..
我有一些获取和设置会话属性的 Java 代码: Object obj = session.getAttribute(TEST_ATTR);如果(对象==空){obj = new MyObject();session.setAttribute(obj);} 为了使这段代码线程安全,我想将它包装在一个同步块中.但是我用什么作为锁定对象呢?使用会话有意义吗? 同步(会话){Object obj =
..
我有大约 60 个套接字和 20 个线程,我想确保每个线程每次都在不同的套接字上工作,所以我根本不想在两个线程之间共享同一个套接字. 在我的 SocketManager 类中,我有一个后台线程,它每 60 秒运行一次并调用 updateLiveSockets() 方法.在 updateLiveSockets() 方法中,我遍历我拥有的所有套接字,然后通过调用 SendToQueue 类的 s
..
标准的 MySQL JDBC 驱动程序线程安全吗?具体来说,我想在所有线程中使用单个连接,但每个语句只会在单个线程中使用.是否有某些情况是安全的,而另一些则不安全?您在这里有什么体验? 解决方案 每个连接开始/提交事务.除非您正在做一些非常具体的事情(老实说,我真的想不出一个例子来证明这是合理的),否则最好使用连接池和每个线程的连接.
..
我知道当前使用 Executors 而不是 ThreadGroup 的做法: 通常首选的处理线程的方式 从线程等中捕获异常... 但是,ThreadGroup 固有的缺陷是什么(我听说过对该类的模糊批评)? 感谢您的回答. 附注.这个似乎没有来回答这个问题. 解决方案 这在 Effective Java 第二版,第 73 条. 线程组最初被设想为一种机制出于
..
我正在尝试学习如何使用 rand_r,并在阅读了这个问题后 我仍然有点困惑,有人可以看看并指出我遗漏了什么吗?据我了解, rand_r 使用一个指向某个值(或一块具有某个初始值的内存)的指针,并在每次调用时使用它来生成新数字.每个调用 rand_r 的线程都应该为它提供一个唯一的指针(或一块内存),以获得不同线程之间的“实际随机"数字.这就是为什么: int globalSeed;//线程1ra
..
我正在尝试使用 Rust 中的一些堆数据启动一个新线程,但由于需要数据具有 'static 生命周期,我收到了一堆错误.我已经把我的程序倒退了,但遇到了问题. 使用 std::sync::Arc;使用 std::thread;结构线程数据{vector_of_strings: Vec,术语:Vec,商:使用,}fn perform_search(slice: &[St
..