线程 thread C# 实现10的奇偶打印

两个线程,一个打印奇数,一个打印偶数 题目:实现两个线程,一个打印奇数,一个打印偶数 思路(1):用c++11的互斥量mutex,条件变量condition_variable.一个全局变量i,控制每个线程获取互斥锁后执行一次,再通过条件变量唤醒另一个等在该锁上的线程,让其执行,即保证两个线程交替运行。 #include <thread> #include <iostream> #include &l... 阅读详情

在下例中,线程由 Main 函数创建和启动。 新线程使用 WaitOne 方法等待事件。 该线程将被挂起,直到由执行 Main 函数的主线程对事件发出信号。 事件发出信号后,辅助线程返回。 在这种情况下,因为该事件仅用于激活一个线程,因此可使用 AutoResetEvent 或 ManualResetEvent 类。

using System;
using System.Collections.Generic;
using System.Threading;

class Program
{
    private static AutoResetEvent auto = new AutoResetEvent(true);
    static List<int> list = new List<int>
    {

    };
    static int i;
    static void Main(string[] args)
    {
        int t = 10;

        for (int i = 1; i <= 10;i++)
        {

            list.Add(i);
           
        }

        
        int tt = t;
        ThreadStart ts1 = new ThreadStart(PrintOdd);
        Thread t1 = new Thread(ts1);
        ThreadStart ts2 = new ThreadStart(PrintEven);
        Thread t2 = new Thread(ts2);
        
        t1.Start();
        
        Thread.Sleep(10);
      //  t2.Start();
        Console.Read();
    }
    //打印1~100中的奇数
    public static void PrintOdd()
    {
        
        for (i = 1; i <= 3;i ++)
        {

            auto.WaitOne();
           if(i>3)
            {
                break;
            }
            
            Console.WriteLine(i);
            auto.Set();
        }
    }
    //打印0~100中的偶数
    public static void PrintEven()
    {
        for (; i <= 3;i ++)
        {

           
            auto.WaitOne();
 if (i > 3)
            {
                break;
            }
            Console.WriteLine(i);
            auto.Set();
        }
    }
}

 

using System;
using System.Threading;

class Program
{
    private static AutoResetEvent auto = new AutoResetEvent(true);
    static void Main(string[] args)
    {
        int t = 10;

        int i;
        i = t--;
        i = --t;
        int tt = t;
        ThreadStart ts1 = new ThreadStart(PrintOdd);
        Thread t1 = new Thread(ts1);
        ThreadStart ts2 = new ThreadStart(PrintEven);
        Thread t2 = new Thread(ts2);
        
        
        t2.Start();
        Thread.Sleep(10);
        t1.Start();
        Console.Read();
    }
    //打印1~100中的奇数
    public static void PrintOdd()
    {
        for (int i = 1; i <= 10; i = i + 2)
        {
          
            auto.WaitOne();
           
            Console.WriteLine(i);
            auto.Set();
        }
    }
    //打印0~100中的偶数
    public static void PrintEven()
    {
        for (int i = 0; i <= 10; i = i + 2)
        {

            auto.WaitOne();

            Console.WriteLine(i);
            auto.Set();
        }
    }
}

 

C#复制

using System;  
using System.Threading;  

class ThreadingExample  
{  
    static AutoResetEvent autoEvent;  

    static void DoWork()  
    {  
        Console.WriteLine("   worker thread started, now waiting on event...");  
        autoEvent.WaitOne();  
        Console.WriteLine("   worker thread reactivated, now exiting...");  
    }  

    static void Main()  
    {  
        autoEvent = new AutoResetEvent(false);  

        Console.WriteLine("main thread starting worker thread...");  
        Thread t = new Thread(DoWork);  
        t.Start();  

        Console.WriteLine("main thread sleeping for 1 second...");  
        Thread.Sleep(1000);  

        Console.WriteLine("main thread signaling worker thread...");  
        autoEvent.Set();  
    }  
}  
C# WinForm 串口通信上位机:3步实现数据收发与16进制转换 本文详细介绍了使用C# WinForm开发串口通信上位机的实战方法,重点讲解数据收发与16进制转换的工程化实现。通过封装SerialPortService类、处理数据格式转换及优化UI交互,帮助开发者快速构建稳健的工业级串口通信应用,适用于物联网设备监控和自动化控制场景。 阅读详情

相关推荐

Unity串口通信实战:基于C# SerialPort与HC-05蓝牙模块的稳定通信方案

串口通信是嵌入式系统与上位机软件交互的基础技术,通过物理或虚拟串口实现设备间的数据交换。其核心原理在于遵循特定的波特率、数据位和停止位等参数进行异步数据传输。在游戏开发与工业上位机应用中,稳定高效的串口通信能实现硬件控制、传感器数据采集等关键功能。Unity引擎中,C#的SerialPort类提供了原生支持,但需解决其异步事件与Unity单线程架构的冲突。本文通过构建线程安全的数据队列,在主线程Update循环中处理数据,有效避免了线程安全问题,并结合HC-05蓝牙模块的透传特性,实现了从数据解析、异常处理

weixin_33726318的博客 498

面试常考:C#用两个线程交替打印1-100的五种方法

以下是对五种方法的简单比较和说明:1、使用ManualResetEventWaitHandle:这种方法在实现上较为简单,但是由于线程必须互斥地访问共享资源,因此会导致性能瓶颈。1、C#编程语言和语法:实现多线程程序需要熟悉C#编程语言和语法,包括线程的创建和管理、共享资源的访问和同步等方面的知识。2、多线程编程:多线程编程是指同时运行多个线程的编程模型,它可以提高应用程序的性能和响应能力。3、线程同步机制:线程同步机制是指用于控制多个线程访问共享资源的机制,常用的线程同步机制包括锁、信号量、事件等。

风清扬的专栏 902

Unity串口通信实战:工业数字孪生项目中的循环读写与协议解析

串口通信作为设备与计算机之间经典的数据交换方式,其核心在于通过串行接口实现稳定、实时的字节流传输。其工作原理基于对波特率、数据位、停止位等关键参数的精确配置,以确保数据帧的准确收发。在工业自动化、物联网和嵌入式系统开发中,串口通信是实现硬件控制与数据采集的基础技术,具有成本低、可靠性高、易于部署的价值。尤其在智能制造、设备监控和数字孪生等应用场景中,它承担着连接物理传感器与虚拟模型的关键桥梁作用。本文聚焦于在Unity引擎中,利用C#的SerialPort类构建稳健的循环读写机制,并深入探讨了多线程协同、协

weixin_30786657的博客 353

c#打印当前所有线程

转:https://stackoverflow.com/questions/10315862/get-list-of-threads ProcessThreadCollection currentThreads = Process.GetCurrentProcess().Threads; Console.WriteLine("threadCount...

aoeace 4560

c#多线程顺序打印1-100数字-源码.rar

C#多线程打印任意范围的数字,使用autoresetevent线程排序打印,源码,经过本人实际测试,可直接运行。

用C#实现的多线程同步打印文章(windows操作系统实验)

本实验通过设计两个线程,一个是文章下载线程和一个文章打印线程,用来实现模拟线程同步打印机,文章下载线程实现把文章下载到缓冲区,文章打印线程实现把文章打印出来。

C# 多线程之同步输出奇偶数

在论坛上见有人说有这么个经典的面试题,我也来说说,^_^ 此题涉及到:多线程,同步,排他 那前面顺便讲一下两个排他应用的AutoResetEvent与ManualResetEvent的区别 AutoResetEvent:通知正在等待的线程已发生事件 ManualResetEvent :通知一个或多个正在等待的线程已发生事件 它们常用的三个事件有: 1)Set(...

weixin_34194379的博客 519

C#并口打印机ESC指令开发Demo

并口打印机指令打印demo,无需安装打印机驱动,直接调用引用的dll即可打印。

C#.NET Thread多线程并发编程学习与常见面试题解析-1、Thread使用与控制基础

前言: 因为平时挺少用到多线程的,写游戏时都在用协程,至于协程那是另一个话题了,除了第一次学习多线程时和以前某个小项目有过就挺少有接触了,最近准备面试又怕被问的深入,所以就赶紧补补多线程基础。 网上已经有很多线程编程的学习笔记了,那我为什么还要再整理一篇呢。因为我在搜索网上文章的时候发现一般别人整理的面试文章那很多语法都一笔带过了默认大家都懂,学习文章又很少有给出经典的题目,一般都是要几篇集合着...

LeeCarry的博客 7236

告别单一查询!MultiQueryRetriever在LangChain中的高级用法解析

本文深入解析了LangChain中的MultiQueryRetriever高级用法,该工具通过大语言模型自动生成多样化查询,显著提升文档检索的召回率和准确性。文章详细介绍了其核心机制、高级配置调优策略以及在多语言和专业领域中的实际应用,为开发者提供了优化知识库问答系统的实用方案。

weixin_28730927的博客 271

应急响应-勒索病毒典型处置案例

服务器感染Globelmposter勒索病毒 事件背景 2020年5月,某公司内外服务器遭遇勒索病毒攻击,应急响应工程师在抵达现场后,对包含服务器在内的13太机器进行系统排查和日志分析。 事件处置 勒索病毒初步判定 首先,对其中一台感染勒索病毒的主机A(源地址为192.168.111.129)进行排查,通过勒索信确认为GlobeImposter勒索病毒,如图所示。 在本地桌面及磁盘发现加密文件后缀为.RESERVE,如图所示。 系统排查 主机账号 通过

qq_50765147的博客 2459

c# 多线程 执行事件 并发_C#.NET Thread多线程并发编程学习与常见面试题解析-1、Thread使用与控制基础...

前言: 因为平时挺少用到多线程的,写游戏时都在用协程,至于协程那是另一个话题了,除了第一次学习多线程时和以前某个小项目有过就挺少有接触了,最近准备面试又怕被问的深入,所以就赶紧补补多线程基础。 网上已经有很多线程编程的学习笔记了,那我为什么还要再整理一篇呢。因为我在搜索网上文章的时候发现一般别人整理的面试文章那很多语法都一笔带过了默认大家都懂,学习文章又很少有给出经典的题目,一般都是要几篇集合着...

weixin_39654352的博客 272

别再踩坑了!Win10下用阿狸狗V3.2.6安装Cadence SPB 17.4的保姆级避坑指南

本文提供了Win10系统下使用阿狸狗V3.2.6安装Cadence SPB 17.4的详细避坑指南,涵盖环境准备、安装失败清理、分步安装与问题诊断、授权配置及典型故障排除等内容,帮助用户顺利完成安装并避免常见错误。

weixin_32576389的博客 359

C#线程同步的几种方法

https://www.cnblogs.com/lgx5/p/9335518.html

ghhong1988的专栏 279

FLUKA软件在Ubuntu的安装指南(亲测有效)

FLUKA其强大的蒙特卡洛模拟能力使得用户能够模拟复杂的辐射相互作用过程

chencheng1127的博客 2887

(数字图像处理MATLAB+Python)第五章图像增强-第一节:图像增强概述和基于灰度级变换的图像增强

图像增强(Image Enhancement):指不考虑图像降质原因,利用各种数学方法和变换手段,增强图像中人们感兴趣部分或提高有用的图像特征的清晰度。从图像质量来看,图像增强提高了图像的可懂度,改善了图像的视觉效果例如在现实场景中,针对那些对比度较差、视觉效果不好的图像,我们就可以利用图像增强改善视觉质量图像增强可分为如下几种基于灰度级变换的图像增强基于直方图修正的图像增强基于照度反射模型的图像增强基于模糊技术的图像增强基于伪彩色处理的图像增强其他图像增强方法分段线性灰度级变换。

快乐江湖的博客 3334

【C#基础】多线程

一、创建线程 在创建线程之前,需要用到 ThreadStart 委托或者 ParameterizedThreadStart 委托创建 Thread 类的实例。 ThreadStart 委托只能用于无返回值、无参数的方法,ParameterizedThreadStart 委托则可以用于带参数的方法。 1、使用ThreadStart 创建线程 ThreadStart ts = new ThreadStart( 方法名 ); Thread t = new Thread(ts); ThreadS

weixin_44023930的博客 443

[PCIE5.0] 4.2.3.2 Encoding of Presets

• 发射器预设:发射器预设值用4位二进制编码,表示不同的预设设置(P0 到 P10),这些设置定义了信号的传输特性。• 接收器预设提示:接收器预设提示是通过3位二进制编码告诉接收器建议的增益值,用于调整接收器的灵敏度(适用于8.0 GT/s数据速率)。

系统固件工程师 574

C#小案例-->让两个线程交替打印偶数和奇数值(并发)

两种实现方法让两个线程交替打印偶数和奇数值(并发)

MM_MS的博客 375

磁环电感参数计算

电感饱和是指当电感中的电流超过一定阈值时,电感中的磁场无法继续增加,而是达到一个饱和状态,导致电感的感应电动势减小或消失。电感通常由线圈组成,当通过线圈的电流不断增加时,线圈内部的磁场也随之增加。然而,当电流达到一定程度时,线圈的铁芯磁化达到饱和,无法进一步增加磁场强度。电感饱和的阈值取决于电感的结构、材料和尺寸等因素。通常情况下,电感的额定电流会标明其饱和电流值。一旦电感中的电流超过了饱和电流,电感将饱和并出现异常行为。当我们谈论电感饱和的时候,实际上是在谈论磁芯饱和——空心的电感永远不会饱和。

小幽余生不加糖 4031

[QMT和ptrade量化交易小白入门]-122、基于聚类分析的动态股票池构建与ETF轮动策略,回测年化 132.09%

本专栏主要是介绍QMT和ptrade的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写200篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。

木头大左的博客 1029

c# hdf5 写string_C#.NET Thread多线程并发编程学习与常见面试题解析-1、Thread使用与控制基础...

前言: 因为平时挺少用到多线程的,写游戏时都在用协程,至于协程那是另一个话题了,除了第一次学习多线程时和以前某个小项目有过就挺少有接触了,最近准备面试又怕被问的深入,所以就赶紧补补多线程基础。 网上已经有很多线程编程的学习笔记了,那我为什么还要再整理一篇呢。因为我在搜索网上文章的时候发现一般别人整理的面试文章那很多语法都一笔带过了默认大家都懂,学习文章又很少有给出经典的题目,一般都是要几篇集合着...

weixin_39571749的博客 118

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

C#的学习笔记【六】线程操作【一】

【实例 1】使用 ThreadStart 委托创建线程,并定义一个方法输出 0〜10 中所有的偶数。 class Program { static void Main(string[] args) { //使用 ThreadStart 创建线程首先需要创建 ThreadStart 委托的实例,然后再创建 Thread 类的实例。 ThreadStart ts = new ThreadStart(PrintEven); Thread t =

BoomBiuBiu的博客 640

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

面试题_多线程

1.两个线程交替打印0~100的奇偶数,此题核心点就是如何控制多线程的执行顺序,执行输出如下效果: 偶数线程: 0 奇数线程: 1 偶数线程: 2 奇数线程: 3 偶数线程: 4 奇数线程: 5 偶数线程: 6 奇数线程: 7 偶数线程: 8 ...

qq_31584315的博客 179

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

上一篇: 事件 与 委托 Invoke() BeginInvoke()
下一篇: Enum.ToString(String)
Bill11YAng
博客等级 码龄14年 165粉丝 230原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值