关于线程同步的问题,求解
有个小程序如下:
问题是如果我不将共享对象设置为线程安全对象,那么程序计算结果就不会是正确结果,但是这五个线程即便会出现打断彼此的情况,也应该会记录自己的运行情况。在获得CPU的使用权的时候也还是能够按照原来的断点继续运行。也就是说即便打断也能够自加100000次。求解答,各位大神
public class shareMemory
{
public int Memory { get; set; }
}
public class increaseMemory
{
private shareMemory test;
public increaseMemory(shareMemory obj)
{
this.test = obj;
}
public void increase()
{
for (int i = 0; i < 100000; i++)
{
test.Memory++;
}
}
}
class Program
{
static void Main(string[] args)
{
shareMemory obj = new shareMemory();
Task[] tasks = new Task[5];
for (int i = 0; i < 5; i++)
{
tasks[i] = new Task(new increaseMemory(obj).increase);
tasks[i].Start();
}
for (int i = 0; i < 5; i++)
{
tasks[i].Wait();
}
Console.WriteLine(obj.Memory);
Console.ReadKey();
}
}
问题是如果我不将共享对象设置为线程安全对象,那么程序计算结果就不会是正确结果,但是这五个线程即便会出现打断彼此的情况,也应该会记录自己的运行情况。在获得CPU的使用权的时候也还是能够按照原来的断点继续运行。也就是说即便打断也能够自加100000次。求解答,各位大神
...全文
相关推荐
第2讲 搜索算法-N皇后问题的自动求解.ppt
"该资源是一份关于搜索算法应用于解决N皇后问题的PPT,主要讲解了N皇后问题的描述、手动求解、自动求解的程序设计以及参考程序。内容涵盖了需求分析、棋盘绘制、搜索算法的实现和线程同步在解题中的应用。"
基于Java多线程的预处理迭代并行求解器.zip
**并行求解器**:并行计算是指同时使用多个处理器或计算节点来解决一个问题。并行求解器设计的目标是将计算任务分解为多个可并行的部分,然后在多线程或多进程环境中执行。
并行计算回溯法求解数独问题c++
在应用OpenMP于回溯法求解数独时,关键在于如何有效地划分任务并管理数据同步。通常,我们可以为每个未填充的数独单元格创建一个线程,每个线程负责尝试填充特定单元格的可能数字。
基于Java多线程的预处理迭代并行求解器.pdf
在Java多线程的背景下,设计一个并行求解器需要考虑线程的创建、管理、同步和通信。Java提供了一系列的并发工具类和接口,如java.util.concurrent包,用以支持复杂的并行程序设计。
Synchronization 线程与同步part1.pdf
在并行求解问题时,如计算面积的四分法,每个部分计算总区域的一个独立区域,但求和过程必须在所有部分完成计算后才能进行。2. 并行化处理的示例:文档中提到了egrep命令的并行化。


