ws22
Beantworten Sie die folgenden Fragen zu diesem Programm und dessen möglichen Ausgaben. Begründen Sie Ihre Antwort ausführlich und verweisen Sie in Ihren Begründungen ggf. auf die Zeilennummern im Code, auf die Sie sich beziehen.
public class SL1 {
volatile int a;
int b,c,e;
AtomicInteger d =
new AtomicInteger(0);
Object o = new Object();
void execute() throws Exception {
= new Worker();
Worker w1 = new Worker();
Worker w2 .start(); w2.start();
w1.join(); w2.join();
w1System.out.println("a: " + a +
" b: " + b + " c: " + c +
" d: " + d + " e: " + e);
}
class Worker extends Thread {
public void run(){
++;
asynchronized (this) {
++;
b}
synchronized (Worker.class) {
++;
c}
.incrementAndGet();
dsynchronized (o){
= new Object();
o ++;
e}
}
}
}
Welche der folgenden Aussagen zu Petri-Netzen treffen zu?
(Lösung)Welche der folgenden Aussagen zum parallelen Programmieren in Java sind korrekt?
(Lösung)Welche der folgenden Aussagen zur funktionalen Programmierung in Scala treffen zu?
(Lösung)Welche der folgenden Aussagen zur parallelen Effizienz treffen zu?
(Lösung)ws21
Gegeben sei folgendes paralleles Programm:
public class SL1 {
int dat = 0;
class T extends Thread {
public void run(){
incrDat();
}
}
synchronized void incrDat(){
dat++;
}
synchronized int awaitAndGet() {
while(dat == 0) {}
return dat;
}
public void execute() throws Exception {
T t1 = new T(); t1.start();
T t2 = new T(); t2.start();
int datBuf = awaitAndGet();
t1.join(); t2.join();
System.out.println("dat: " + datBuf);
}
}
Gegeben sei folgendes paralleles Programm:
public class SL2 {
volatile int a = 0;
volatile int b = 0;
int c = 0;
volatile boolean t1Done = false;
volatile boolean t2Done = false;
int counter = 0;
class T1 extends Thread {
public void run() {
a = 1;
synchronized (SL2.class) {
counter++;
}
c++;
t1Done = true;
}
}
class T2 extends Thread {
public void run() {
try { Thread.sleep(1000);
} catch (Exception e) {}
b = a;
synchronized (SL2.class) {
counter++;
}
c++;
t2Done = true;
}
}
public void execute()
throws Exception {
new T1().start();
new T2().start();
while (true) {
synchronized (this) {
if(counter > 0) break;
}
}
while (!(t1Done && t2Done)) {}
System.out.println("b: " + b);
System.out.println("c: " + c);
System.out.println("counter: "
+ counter);
}
}
In der Vorlesung wurde ein Algorithmus zur parallelen Maximumssuche vorgestellt. Welche Aussagen dazu treffen zu?
(Lösung)Welche der folgenden Aussagen zu MapReduce treffen zu?
(Lösung)Welche der folgenden Aussagen zu Synchronisation in Java sind korrekt?
(Lösung)ws20
In der Vorlesung wurde eine parallele Variante des Algorithmus von Dijkstra vorgestellt, die auf MapReduce beruht. Welche Aussagen treffen darauf bezogen zu?
(Lösung)Welche Aussagen treffen auf die Implementierung einer parallelen Reduktion mittels Turnierverfahren zu?
(Lösung)Welche Aussagen zu Synchronisation in Java stimmen?
(Lösung)ws19
Welche Aussagen gelten bei Verwendung eines Thread-Pools in Java?
(Lösung)Welche Aussagen zur thread-sicheren Programmierung in Java sind korrekt?
(Lösung)Welche Aussagen über Scala treffen zu?
(Lösung)Welche der folgenden Bedingungen sind für eine Verklemmung notwendig?
(Lösung)ss23
Beantworten Sie die folgenden Fragen zu diesem Programm und dessen möglichen Ausgaben. Begründen Sie Ihre Antwort ausführlich und verweisen Sie in Ihren Begründungen ggf. auf die Zeilennummern im Code, auf die Sie sich beziehen.
public class SL1 {
CyclicBarrier bar =
new CyclicBarrier(3);
int a = 0, c = 0, d = 0;
AtomicInteger b =
new AtomicInteger(0);
ReentrantLock lock =
new ReentrantLock();
void execute() throws Exception {
= new Worker();
Worker w1 = new Worker();
Worker w2 .start(); w2.start();
w1.await();
barSystem.out.println("a: "
+ a);
.await();
barSystem.out.println("b: "
+ b.get());
.await();
bar= new CyclicBarrier(3);
bar System.out.println("c: "
+ c);
.await();
barSystem.out.println("d: "+ d);
}
class Worker extends Thread {
public void run() {
try {
int tmp = a + 1;
.await();
bar= tmp;
a .set(b.get() + 1);
b.await();
barsynchronized (b){
++;
c}
.await();
bar.lock();
lock++;
d.unlock();
lock.await();
bar} catch (Exception e) {}
}
}
}
Beantworten Sie die folgenden Fragen zu diesem Programm und dessen möglichen Ausgaben. Begründen Sie Ihre Antwort ausführlich und verweisen Sie in Ihren Begründungen ggf. auf die Zeilennummern im Code, auf die Sie sich beziehen.
public class SL2 {
long value = 0;
synchronized void setVal(long in) {
= in;
value }
void execute() {
= new Doubler();
Doubler d .start();
dsynchronized (this) {
.process(20);
d}
synchronized (this) {
.process(21);
d}
System.out.println("value: "
+ value);
}
class Doubler extends Thread {
volatile long i = 0;
synchronized void process
(long in){
= in;
i }
public void run(){
while(value != 42) {
synchronized (this) {
setVal(i * 2);
}
}
}
}
}
Welche der folgenden Aussagen zum Lemma von Brent (LvB) sind korrekt?
(Lösung)Welche der folgenden Aussagen zur funktionalen Programmierung in Scala sind korrekt?
(Lösung)Welche der folgenden Aussagen zur parallelen Programmierung in Java sind korrekt?
(Lösung)ss22
Erinnerung: Die Methode exchange der Klasse Exchanger blockiert, ähnlich einer Barriere, bis sie von genau zwei Threads aufgerufen wurde. Sie liefert jedem aufrufenden Thread den Wert zurück, den der jeweils andere übergeben hat. Gegeben sei folgendes paralleles Programm:
public class SL1 {
Exchanger<Integer> ex
= new Exchanger<>();
int a,b;
class Worker extends Thread {
synchronized void setValues(){
b = 1;
a = 1;
}
public void run() {
try {
setValues();
int sum = a + b +
ex.exchange(0);
ex.exchange(sum);
} catch (Exception e){}
}
}
void execute() throws Exception {
Thread w = new Worker();
w.start();
int la = 0;
while(la == 0) {
la = a;
}
int lb = b;
int buf = ex.exchange(40);
System.out.println(
"b: " + b);
System.out.println(
"la: " + la + " lb: " + lb);
System.out.println(
"sum: " + ex.exchange(buf));
}
}
Gegeben sei ein paralleles Fließband mit den Stufenzeiten 2s, 3s, 1s, 3s. Welche der folgenden Aussagen treffen zu?
(Lösung)Gegeben sei folgendes paralleles Programm:
public class SL2 {
BlockingQueue<Integer> work =
new LinkedBlockingQueue<>();
BlockingQueue<Integer> done =
new LinkedBlockingQueue<>();
Worker w1,w2;
class Worker extends Thread {
public void run(){
while(!work.isEmpty()){
try {
int todo = work.take();
done.put(todo * 2);
} catch (Exception e){}
}
}
}
void execute() throws Exception{
w1 = new Worker(); w1.start();
w2 = new Worker(); w2.start();
for(int i = 1; i < 5; i++){
work.put(i);
}
w1.join(); w2.join();
System.out.println("out: ");
Integer out = done.poll();
while (out != null){
System.out.print(out + " ");
out = done.poll();
}
System.out.println("done");
}
}
Beantworten Sie die folgenden Fragen zu diesem Programm und dessen möglichen Ausgaben. Begründen Sie Ihre Antwort.
(Lösung)Welche der folgenden Aussagen zu Parallelität und Synchronisation in Java sind korrekt?
(Lösung)Welche der folgenden Aussagen zur Flynnschen Taxonomie treffen zu?
(Lösung)Welche der folgenden Aussagen zur funktionalen Programmierung in Scala treffen zu?
(Lösung)ss21
Gegeben sei ein paralleles Fließband mit den Stufenzeiten 3 s, 1 s, 6 s, 2 s. Welche Aussagen treffen zu.
(Lösung)Welche Aussagen zu Verklemmungen sind korrekt?
(Lösung)Welche Aussagen zur Synchronisation in Java stimmen?
(Lösung)ss20
Das Verfahren der Zeigerverdopplung aus der Vorlesung wird auf folgende Liste angewandt:
0 1 2 3 4 5
4 3 -1 2 5 1
Welche Aussagen sind richtig?
(Lösung)Welche Aussagen treffen auf eine Parallelisierung mittels Fließband zu?
(Lösung)Welche Aussagen zur Parallelisierung in Java sind korrekt?
(Lösung)ss19
Welche Aussagen treffen für ein paralleles Fließband mit den Stufenlaufzeiten 2 s, 4 s, 3 s und 4 Eingabedaten zu?
(Lösung)Welche Aussagen ¨uber parallele Programmierung in Java sind richtig?
(Lösung)Welche Aussagen über die Analyse paralleler Algorithmen treffen zu?
(Lösung)Welche Aussagen über parallele Programme sind richtig?
(Lösung)ss18
Die Anwendung des Lemmas von Brent auf einen parallelen Algorithmus mit Laufzeit in , bei dem Prozessoren zusammen Schritte ausführen
(Lösung)Welche Aussagen sind f¨ur Java zutreffend?
(Lösung)Welche Aussagen zur Parallelisierung von Teile-und-herrsche-Algorithmen sind zutreffend?
(Lösung)Welche Behauptungen zur Parallelisierung mittels Fließband treffen zu?
(Lösung)Generiert am 2024-05-16.