具体任务(代码内容):
一、输入10个数如13 、10、8、17、5、20、3、9、15、2,对其进行由小到大排序。其中包含10次循环,对每次循环建立1个线程,也就是建立10个线程。
按照顺序
线程1找出10个数中最小的数2,
线程2对剩下的9个数中找出最小的数3,
线程3得到数5,
线程4得到数8,
线程5得到数9,
线程6得到数10
线程7得到数13
线程8得到数15
线程9得到数17
线程10得到数20
安排线程间的调度根据C++中对多线程并行应用做出正确的输出即2 3 5 8 9 10 13 15 17 20 。
二、根据第一步中的数据在10个线程中再创建一个线程5*直接对这一线程赋值9与第5个线程得到的值9判断得到相等,直接调用5*线程作为输出,得到输出队列2 3 5 8 9 10 13 15 17 20 。
三、再创建一个线程5**对线程赋值7与线程5判断得不相同,还是调用线程5作为输出,得到输出队列2 3 5 8 9 10 13 15。
第2步和第3步也就是所谓的对第5线程前瞻判断 第3步是前瞻失效情况 已经失效了 对线程重启也无意义所以直接调用线程5输出。
再界面方面 可作4个显示 输入数列13 、10、8、17、5、20、3、9、15、2,
1、先用一般的串行程序排序算法对这10个数的数组进行输出显示。即
2 3 5 8 9 10 13 15 17 20 。
2、再引入线程对多线程并行调度对数组输出显示
2
3
5
8
9
10
13
15
17
20
3、多线程前瞻正确情况的输出显示分2个一个是正确的 一个是错误的 。如当线程5判定正确实显示“前瞻正确”调用线程5*输出。当线程5和线程5**判定错误时显示“前瞻失效,前瞻线程无意义”使用原来线程5做输出。
其实质内容就是对线程的调度问题,而对前瞻这方面通过线程调度做了一个内容演示。