理解c#的多线程的时间片分配
来源:互联网 发布:阿里云大数据 编辑:程序博客网 时间:2024/05/22 14:43
class ThreadClass {
public static void MyThread() {
for (int x = 0; x < 100; x++) {
Console.ForegroundColor = ConsoleColor.Red;
Console.Write(x.ToString("000")+" ");
}
}
static void Main(string[] args) {
Thread thrd1 = new Thread(new ThreadStart(MyThread));
thrd1.Start();
for (int x = 300; x < 400; x++) {
Console.ForegroundColor = ConsoleColor.Green;
Console.Write((x).ToString("000")+" " );
}
Console.ReadLine();
}
public static void MyThread() {
for (int x = 0; x < 100; x++) {
Console.ForegroundColor = ConsoleColor.Red;
Console.Write(x.ToString("000")+" ");
}
}
static void Main(string[] args) {
Thread thrd1 = new Thread(new ThreadStart(MyThread));
thrd1.Start();
for (int x = 300; x < 400; x++) {
Console.ForegroundColor = ConsoleColor.Green;
Console.Write((x).ToString("000")+" " );
}
Console.ReadLine();
}
}
运行,结果如下图:
为什么“000”会显示为绿色?共有两个线程,先运行main中的Console.ForegroundColor = ConsoleColor.Green;和Console.ForegroundColor = ConsoleColor.Green;,显示绿色300->运行MyThread中的Console.ForegroundColor = ConsoleColor.Red->执行main的Console.ForegroundColor->Mythread中的Console.Write(x.ToString("000")+" ");显示绿色000。
同理,“303”、“310”、“312”等显示为红色,而“”003“、”004“、”005“等显示为绿色。
可见多线程的时间片的分配具有很大的不确定性,线程间一般不应共享同一个变量。
Console.ForegroundColor = ConsoleColor.Red;
阅读全文
0 0
- 理解c#的多线程的时间片分配
- Linux0.11进程分配时间片的策略
- 进程时间片的分配(优先级设定)
- Linux进程时间片的分配(调度策略和参数)
- 编程的时间分配
- 内核重新计算时间片的技巧
- 普通进程的时间片用完后
- 错误的CPU时间片大小概念
- 基于优先权的时间片轮转算法
- 时间片轮转的多道程序
- 一个简单的时间片轮转内核
- 模拟时间片轮转的JavaScript实现
- 基于时间片的程序调度分析
- 基于时间片的多任务实现
- C#多线程分配
- DM6446如何将算法的stack分配到片内存储器
- DM6446如何将算法的stack分配到片内存储器
- 深入理解Java:SimpleDateFormat安全的时间格式化(多线程应用)
- python连接SQL报错:1366, "Incorrect string value: '\\xF0\\x9F\\x98\\x81'
- Mac 安装 hadoop+hive+hbase+spark
- 深度学习(一)
- 用Python写一个可以记日记的小程序
- UVa1658: Admiral 题解
- 理解c#的多线程的时间片分配
- 函数malloc()和函数calloc()区别介绍
- CryEnginev渲染流程(by longlongway2012)
- 抽象类与接口
- nginx配置参数详解
- 我的“项目”:教务管理系统
- linux内核--段页式管理内存的方法
- redis的基本命令
- mybatis示例1