随笔分类 -  C# 线程基础知识学习

C# 线程同步的多种方式
摘要:实际应用中多个线程往往需要共享数据,因此必须使用同步技术,确保一次只有一个线程访问和改变共享数据。同步又分为进程内部线程的同步以及进程之间线程的同步。 进程内部线程同步: 1. lock : 使用比较简单 lock(obj){ Synchronize part }; 只能传递对象,无法设置等待超时; 阅读全文

posted @ 2019-07-20 12:59 Change_Myself 阅读(15424) 评论(0) 推荐(2)

C# 多线程中的常见问题
摘要:1. 资源竞争 当多个同时执行的线程需要同时对全局变量进行写读操作时,容易出现资源竞争的问题,导致运行结果出现多种情况。以下面的例子进行说明: 大多数情况,运行结果如下: Main Start....TaskId 1 Excute other code....num is 5TaskId 2 Exc 阅读全文

posted @ 2019-07-10 14:54 Change_Myself 阅读(2511) 评论(0) 推荐(0)

C# 创建线程的多种方式之 Parallel类 基础知识
摘要:Parallel 类定义了并行运行的静态For(), Foreach(), Invoke()方法, 其中For(), Foreach() 多次调用同一个方法,方法返回值均为ParallelLoopResult,而Invoke()可同时调用多个不同的方法,无返回值。 For(), Foreach()方 阅读全文

posted @ 2019-07-08 14:33 Change_Myself 阅读(590) 评论(0) 推荐(0)

C# 创建线程的多种方式之 线程池和任务 基础知识
摘要:1. 线程池 创建,释放线程都需要消耗很多时间,所以如果有许多的用时较短的小任务需要同时完成且不需要过多的控制,则可以选择线程池来实现,即ThreadPool类. 对于线程所执行的任务来说,可以把线程分为两种类型:工作者线程和I/O线程。工作者线程用来完成一些计算的任务,在任务执行的过程中,需要CP 阅读全文

posted @ 2019-07-03 16:54 Change_Myself 阅读(3319) 评论(0) 推荐(0)

C# 创建线程的多种方式之Thread类基础知识
摘要:1. Thread类创建线程 该类的构造函数可以接受ThreadStart委托参数(定义了无参,返回void的函数),以及ParameterizedThreadStart委托参数(定义了Object参数,返回void的函数)。 当然Thread类也可以和Lamda表达式一起使用,实现与上面同样的功能 阅读全文

posted @ 2019-07-02 09:43 Change_Myself 阅读(7876) 评论(0) 推荐(0)

C# 创建线程的多种方式之异步调用基础知识
摘要:创建线程一种简单的方式是委托的异步调用,Delegate类提供了BeginInvoke方法,该方法可以传递委托类型定义的参数(所以BeginInvoke参数数量是可变的),另外还有2个固定的参数 回调函数委托AsynsCallBack和类型Object(如果不使用可直接赋值为null)。 Begin 阅读全文

posted @ 2019-06-30 11:29 Change_Myself 阅读(1070) 评论(0) 推荐(0)

C# 中的 浅表拷贝和深层拷贝
摘要:浅表拷贝得到一个新的实例,一个与原始对象类型相同、值类型字段相同的拷贝。但是,如果字段是引用类型的,则拷贝的是该引用, 而不是的对象。若想将引用字段的对象也拷贝过去,则称为深拷贝。 1.System.Object提供了受保护的方法 MemberwiseClone,可用来实现“浅表”拷贝。由于该方法标 阅读全文

posted @ 2019-06-01 11:20 Change_Myself 阅读(1298) 评论(0) 推荐(0)