当前位置: 首页 > news >正文

线程与进程___(一)

1、线程

Thread 类创建得线程为前台线程,线程池中的为后台线程,,,Main方法结束后,前台线程仍然运行,直到完成,而后台线程立刻结束。

调用线程时候不会立刻进入 Running  状态, 而是处于Unstarted状态,只有当操作系统得线程调度器选择了要运行得线程,这个线程得状态才会修改为Running 状态,,我们使用Thread.Sleep() 方法可以让当前线程进入休眠状态。

使用Tread对象得  Abort()  方法可以停止线程,在终止要终止得线程中抛出ThreadedAbortException 类型得一场,我们可以try  catch  一场,然后再线程结束前做一些清理工作。

如果需要等待线程得结束,可以调用Thread对象得Join方法,表示把Thread加入进来,停止当前线程,并设为WaitSleeoJoin  状态,知道加入得线程完成为止。

1.1、多线程资源冲突

C# 多线程学习(五)线程同步和冲突解决_c# 线程冲突现象-CSDN博客

lock关键字:同一时间,只能被一个线程调用

1.2、死锁问题

出现这种情况的原因就是多个线程都是对同一个资源进行操作所致,所以在多线程编程应尽可能避免这种情况,当然有些情况下确实避免不了这种情况,这就需要对其采用一些手段来确保不会出现这种情况,这就是所谓的线程的同步。
在C#中实现线程的同步有几种方法:lock、Mutex、Monitor、Semaphore、Interlocked和ReaderWriterLock等。同步策略也可以分为同步上下文、同步代码区、手动同步几种方式。

C#中的死锁和解决方案_c# 死锁-CSDN博客

问题:  同时用一把叉子,,一把刀子  ,或者两个都要的问题。

设计拿锁的先后顺序

2、任务

TaskFactory   任务工厂来启动任务

    internal class Program{static void Test(){for (int i = 0; i<1000;i++){Console.WriteLine("A");}}static void Main(string[] args){TaskFactory tf = new TaskFactory();Task t1 = tf.StartNew(Test);Thread.Sleep(1000);}}

http://www.lryc.cn/news/349753.html

相关文章:

  • Google IO 2024有哪些看点呢?
  • 纯血鸿蒙APP实战开发——Navigation页面跳转对象传递案例
  • Windows C++ 读取、修改配置文件.ini
  • 物联网D3——按键控制LED、光敏传感蜂鸣器
  • Spring初学入门(跟学笔记)
  • 二进制部署k8s---下篇
  • 基于Sentinel-1遥感数据的水体提取
  • C++自定义头文件使用(函数和类)
  • 消息队列选型
  • ubuntu在conda环境中使用 pip install -r requirements.txt但是没有安装在虚拟环境中
  • 力扣127.单词接龙讲解
  • latex笔记
  • 秋招算法——AcWing101——拦截导弹
  • IDEA不能创建新项目和新模块
  • WebRTC 的核心:RTCPeerConnection
  • LeetCode hot100-39-N
  • NumPy常用操作
  • 学习笔记——字符串(单模+多模+练习题)
  • DOT + graphviz 轻松画图
  • 使用Vue调用ColaAI Plus大模型,实现聊天(简陋版)
  • Unity使用sherpa-onnx实现离线语音合成
  • Elasticsearch入门基础和集群部署
  • 12、24年--信息系统治理——IT治理
  • Electron学习笔记(三)
  • 【Redis】Redis键值存储
  • C++系统编程篇——Linux初识(系统安装、权限管理,权限设置)
  • No Cortex-M SW Device Found
  • 提升写作效率的秘密武器:一个资深编辑的AI写作体验
  • Python sort() 和 sorted() 的区别应用实例详解
  • 七、Redis三种高级数据结构-HyperLogLog