2. cvičení


Použití Common Lisp knihovny

    
        ;; Paralelní progn
        ;; SYNTAXE:

        (pprogn
            (expr-1)
            (expr-2)
            .
            .
            .
            (expr-n))

        ;; Každý expr-i je spuštěn ve vlastním vlákně.
        ;; A vlákno ve kterém byl pprogn vyhodnocen počka až vsšchna ostatní vlákna dokončí výpočet.


        ;; Příklad
        (pprogn
            (+ 1 1)
            (+ 2 2))

        ;; Paralelní dotimes
        ;; SYNTAXE:

        (pdotimes (i n)
            body)

        ;; Pro každé i z intervalu [0, 9] se vytvoří nové vlákno
        ;; a v tomto vlákně je vyhodnoceno tělo.

        ;; Příklad
         (pdotimes (i 10)
            (print i))

        ;; Paralelní dolist
        ;; SYNTAXE:

        (pdolist (i list)
            body)

        ;; Každý prvek z list se navážena proměnou i a se vytvoří nové vlákno
        ;; a v tomto vlákně je vyhodnoceno tělo.

        ;; Příklad
         (pdolist (i '(1 2 3 4 5 6))
            (print i))

    

Úkoly

  1. Napište program, kde budou alespoň 2 vlákna n-krát inkrementovat čítač. Za n zvolte dostatečně velké číslo.

  2. Napište program, kde budou 2 vlákna každé z nich se uspí na náhodnou dobu a pak vypíše text na obrazovku.

  3. Naprogramujte nasledující algoritmus. Před implementací zkuste přijít na to co daný algoritmus dělá.

    Algorithm A
  4. (Bodovaný) Naprogramujte paralelní násobení matic.


Zdroje

[1] M. BEN-ARI, Principles of Concurrent And Distributed Programming, second edidion, 2006