随笔分类 -  多线程

摘要:前面我们讲过了lock的用法以及竞争条件导致的错误,实际上lock关键字是Monitor类用例的一个语法糖。如果我们分解使用了lock关键字的代码,将会看到它如下面代码片段所示: 在多线程编程中另一个常见的多线程错误被称为死锁(deadlock)。在以下例子中,将演示使用Monitor类来避免死锁, 阅读全文
posted @ 2018-12-20 23:33 我是搞艺术的 阅读(395) 评论(0) 推荐(0)
摘要:C#中lock关键字主要是为确保当一个线程使用某些资源时,同时无法其他线程无法使用该资源。下面我们看看下面的小例子。 下面是输出结果,可以看到输出结果并非我们所期望的0,当然结果可能为0,但大多数情况下都不是。 在这个例子中,当主程序启动时,创建了一个Counter对象。该类定义了一个可以递增和递减 阅读全文
posted @ 2018-12-19 23:26 我是搞艺术的 阅读(150) 评论(0) 推荐(0)
摘要:在C#中,向线程中传递参数的方法通常有三种,将在下面的例子中展示。 1、当主程序启动时,首先创建了ThreadSample的一个对象,并提供了一个迭代次数。然后使用该对象的CountNumbers方法启动线程。该方法运行在另一个线程中,但是使用数字是10,该数字是通过ThreadSample对象的构 阅读全文
posted @ 2018-12-17 23:50 我是搞艺术的 阅读(260) 评论(0) 推荐(0)
摘要:当程序启动时定义了两个不同的线程。默认情况下,显式创建的线程是前台线程。前台线程与后台线程的主要区别在于:进程会等待所有的前台线程完成工作后再结束工作,但是如果只剩下后台线程,则会直接结束工作。从下面的小例子可以看出。 通过定义两个线程,并手动的设置ThreadTwo对象的IsBackground属 阅读全文
posted @ 2018-12-17 21:57 我是搞艺术的 阅读(512) 评论(0) 推荐(0)