A、互斥量解锁成功
B、当前没有任何线程申请了读写锁
C、当前只有线程申请了读锁
D、当前已有线程申请了写锁
第1题
A、互斥量解锁成功
B、当前没有任何线程申请了读写锁
C、当前只有线程申请了读锁
D、当前已有线程申请了写锁
第2题
4.1 (实验目的:熟悉Window进程创建过程)在Windows环境下,利用高级语言编程环境(限定为VS环境或VC环境)调用相关的系统调用(CreateProccess,即系统API)实现一个包括“进程创建,文件读写”的应用程序。有一个文本文件CommandList.txt,第一行是说明性文字:本文件最后一次打开和运行日期是20190407。第二行开始每行是一个可执行程序的名称(含路径)。编写一个应用程序能打开该文件,并顺序执行其中的每个程序,并更新文件第一行中的日期。 [下面有一个文本文件CommandList.txt的截图] --------------------------------------------------------------------- | 本文件最后一次打开和运行日期是20190407 | | c:\Windows\system32\notepad.exe | | c:\Windows\system32\calc.exe | | c:\Windows\system32\mspaint.exe | | | |-------------------------------------------------------------------| 4.2 (实验目的:熟悉Linux fork创建进程的方法)在Ubuntu或Fedora环境使用fork函数创建一对父子进程,分别输出各自的进程号和提示信息串。 4.3 (实验目的:熟悉Linux 创建线程的方法)在Ubuntu或Fedora环境使用pthread_create函数创建2个线程A和B。线程A在屏幕上用while循环顺序递增地输出1-1000的自然数;线程B在屏幕上用while循环顺序递减地输出1000-1之间的自然数。为避免输出太快,每隔0.5秒输出一个数。 4.4(实验目的:熟悉Window线程创建过程)Windows环境下,利用高级语言编程环境(限定为VS环境或VC环境)调用CreateThread函数实现4.3的功能。 4.5(实验目的:熟悉Window线程创建过程)在windows环境下,利用高级语言编程环境(限定为VS环境或VC环境)调用CreateThread函数实现“并发地画圆和画方”。圆的中心,半径,颜色,正方形的中心,边长,颜色等参数自己确定,合适就行。圆和正方形的边界上建议取720个点。为直观展示绘制的过程,每个点绘制后睡眠0.2秒~0.5秒。 4.6(实验目的:熟悉Window线程创建过程)在windows环境下,利用高级语言编程环境(限定为VS环境或VC环境)调用CreateThread函数实现“文件拷贝小工具”。功能如下:1)具有一个编辑框,让用户任意指定源目录或文件,2)具有一个编辑框,让用户任意指定目的目录或文件;3)具有“开始拷贝”按钮;4)具有“停止拷贝”按钮5)具有显示拷贝进度的Label,当为目录拷贝时以文件数来统计进度,当为文件拷贝时以字节数来统计进度。 4.7(实验目的:理解“生产者-消费者”同步模型,熟悉Window同步控制机制和编程应用)在windows环境下,利用高级语言编程环境(限定为VS环境或VC环境)调用CreateThread函数和相关的同步函数,模拟实现“生产者-消费者”问题。 4.8(实验目的:熟悉Linux信号机制编程应用)在Ubuntu或Fedora环境创建父子2个进程A,B。进程A不断获取用户从键盘输入的字符串或整数,通过信号机制传给进程B。如果输入的是字符串,进程B将其打印出来;如果输入的是整数,进程B将其累加起来,并输出该数和累加的和。当累加和大于100时结束子进程,子进程输出“My work done!”后结束,然后父进程也结束。 4.9(实验目的:熟悉Windows管道通信机制编程应用)在windows环境下实现4.7.1节“算命大师程序的改进版”程序。
第6题
A.正常使用对象锁时,对共享数据的读访问不一定要在临界区内,但写访问必须在临界区内
B.为了防止单个线程因为自己持有的锁而陷入死锁,Java规定对象不可以重复加锁
C.正常使用对象锁时,临界区内的共享数据必须是私有的
D.在Java中设有专门检测和预防死锁的机制,可供程序直接使用
第8题
B、若多个线程对共享数据只执行“读”操作,则不存在共享数据一致性问题
C、若多个线程对共享数据执行“写”操作,则存在共享数据一致性问题
D、各线程可以自由访问共享数据
第9题
【说明】
下面的Java程序演示了程序竞争资源(Mutex的实例对象)而引起程序死锁的一种例子。
【Java程序】
import java.applet.*;
import java.awt.*;
//此处声明一个互斥类
class Mutex { }
class A extends (1)
{
private Mutex first,second;
public A(Mutex f,Mutex s)
{
first = f;
second = s;
}
public void run()
{
//锁定first变量
(2) (first)
{
try
{ //本线程挂起,等待重新调度
Thread.sleep(1); //注意此处(1)不是小题序号
}
catch(InterruptedException e){}
System. out. println("threadA got first mutex");
(2) (second) //锁定second变量
{ //do something
System. out. println("threadA got second mutex");
} //释放second变量
} //释放first变量
}
}
class B extends (1)
{
private Mutex first,second;
public B(Mutex f,Mutex s)
{
(3) ;
second = s;
}
public void run()
{
(2) (second) //锁定second变量
{
//do something
try
{
Thread.sleep(((int)(3*Math.random()))*1000);
//本线程挂起,等待重新调度
}
catch(InterruptedException e){}
System.out.println("threadB got second mutex");
(2) (first) //锁定first变量
{
//do something
System.out.println("threadB got first mutex");
} //释放first变量
} //释放second变量
}
}
public class DeadlockExample
{
public static void main(String arg[])
{
Mutex mutexX = new Mutex();
Mutex mutexY = new Mutex();
AthreadA = new A(mutexX,mutexY);
B threadB = new B (4);
threadA.(5);
threadB.start();
}
}
第10题
阅读线程之间的通信程序,理解并能仿写运行即可。 生产者与消费者。 class Computer{ // 具体生产的物品实体类的实现 private String name; public static int sum=0; private boolean flag=true; public Computer(String name){ this.name=name; } public synchronized void set(){ //生产电脑 if(!flag){ try{ super.wait(); }catch(Exception e){ e.printStackTrace(); } } sum=sum+1; System.out.println("第"+sum+"台"+name+"电脑被生产"); flag=false; super.notify(); } public synchronized void get(){ //搬走电脑 if(flag){ try{ super.wait(); }catch(Exception e){ e.printStackTrace(); } } System.out.println("第"+sum+"台"+name+"电脑被搬走"); flag=true; super.notify(); } } class Producter implements Runnable{ //生产者 private Computer c=null; public Producter(Computer c){ this.c=c; } public void run(){ for(int i=0;i<1000;i++){ this.c.set(); } worker implements runnable{ 消费者 private computer c="null;" public worker(computer c){ this.c="c;" void run(){ for(int i="0;i<1000;i++){" this.c.get(); test{ 测试类 static main(string args[]){ computer("联想"); producter p="new" producter(c); w="new" worker(c); new thread(p).start(); thread(w).start();>
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!