zoukankan      html  css  js  c++  java
  • C# 多线程task

    1.异步和多线程的区别?
    没什么太大区别。异步是目的,使用多线程实现。想想AJAX异步加载,不就是不想让浏览器界面卡住嘛,所以在程序中对于某些单独的操作,比如写日志,我们不想等它完成后再执行其它操作(因为写日志只是记录和应用提供的功能无关),可以单独开一个线程来执行执行写日志的操作。

    2.什么是多线程?
    同时执行多个任务。为什么你的程序不能同时执行多个任务?因为整个程序就是一个主线程,而一个线程同时只能从上至下顺序完成任务。比如控制台应用,你在一个while(true)的代码里Console.WriteLine(1)。拿这个程序就会在while(true)的代码里走不出来,可是如果你开启一个其它线程,在另一个线程里while(true)并且 Console.WriteLine(2),那控制台就可以同时打印1和2

    3.thead和theadpool
    C#中对于线程的开启可以使用thead这个类来开启。theadpool是一个线程池,对于需要频发开启线程的操作是一个优化。                                  

    4.thead和theadpool

    C#中对于线程的开启可以使用thead这个类来开启。theadpool是一个线程池,对于需要频发开启线程的操作是一个优化。thead和theadpool并不怎么容易控制所以不建议使用它们开启线程,task一般来讲是用来替代theadpool的,毕竟theadpool坑太多。

    至C#4.0起,线程建议使用task。task会根据你线程的任务,来决定内部是使用thead还是theadpool来完成你指定的任务。这是它强大的地方。

    5.数据安全问题
    数据安全问题。也有人称之为重入和集合安全问题。这是因为在多线程编程下,多个线程同时操作一个数据,会导致数据改变的莫名其妙不符合你的需要,一般有三个方法,我觉得最简单的就是使用lock锁住这个数据,不让其它线程访问只让当前线程访问。

  • 相关阅读:
    7-4 找出不是两个数组共有的元素(20 分)
    7-2 删除重复字符(20 分)
    7-1 兔子繁衍问题(15 分)
    1018 Public Bike Management (30分) (迪杰斯特拉+dfs)
    PAT 1014 Waiting in Line (30分) 一个简单的思路
    1010 Radix (25分)
    试题编号: 201809-4 试题名称: 再卖菜 记忆化搜索
    试题编号: 201903-3 试题名称: 损坏的RAID5
    CCF 试题编号: 201909-4 试题名称: 推荐系统
    洛谷P3809 后缀数组模板
  • 原文地址:https://www.cnblogs.com/gdpw/p/9208366.html
Copyright © 2011-2022 走看看