Professional Documents
Culture Documents
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2014/2015 GB
2 / 16
wxPython windows
wx.Panel
wx.ScrolledWindow
wx.SplitterWindow: moze biti horizontalna i vertikalna podjela, granica prozora se moze vuci i tako
mijenjati prostor koji zauzima svaki dio prozora
2014/2015 GB
3 / 16
wx.Dialog
wx.MiniFrame
wx.MDIParentFrame, wxMDIChildFrame
wx.StatusBar
wx.ToolBar
wx.Notebook
wx.html.HtmlWindow
2014/2015 GB
4 / 16
wx.Button, wx.BitmapButton
wx.RadioBox, wx.RadioButton
wx.CheckBox
wx.Choice
wx.ComboBox
wx.SpinButton
wx.ToogleButton
wx.calendar.CalendarCtrl
2014/2015 GB
5 / 16
wx.ListBox
wx.CheckListBox
wx.Gauge
wx.Slider
wx.StaticBox
wx.ListCtrl
wx.TreeCtrl
ima ih jos
2014/2015 GB
6 / 16
Eli Bendersky je napisao wxPython aplikaciju wx mpl bars.py koja crta histogram u matplotlibu:
2014/2015 GB
7 / 16
Eli Bendersky je napisao i wxPython aplikaciju wx mpl dynamic graph.py koja crta graf u trenutku
izvrsavanja programa:
2014/2015 GB
8 / 16
Eli Bendersky je napisao i wxPython verziju poznate racunalne igre Tetris. Taj program mozete downloadati
sa ovog Moodle tecaja.
2014/2015 GB
9 / 16
Upute za igricu se nalaze u izborniku Help. Najveci dio programa se nalazi u direktoriju lib.
2014/2015 GB
10 / 16
Program mandelbrotwx.py je stariji i pisan je jos dok numpy (i njegov prethodnik paket Numeric) nije
postojao. Medjutim, izvrsava se znacajno brze od programa mandelbrot.py.
2014/2015 GB
11 / 16
Multithreading
Compiliranjem bilo kog racunalnog programa dobiva se njegova izvrsna verzija. Proces je instanca izvrsnog
programa koja se izvrsava na racunalu.
Primjer multithreadinga je Web preglednik: moze istovremeno komunicirati na mrezi i prikazivati sadrzaj na
zaslonu. Ili npr. word processor gdje istovremeno snimamo sadrzaj na disk, printamo i unosimo tekst.
Visedretveni programi su efikasniji, ali nije lako pisati ih.
2014/2015 GB
12 / 16
13 / 16
U sustavima s jednim procesorom dretve dijele CPU vrijeme i operacijski sustav je odgovoran za raspodjelu
resursa. To je prakticno zbog toga sto je CPU u programima s jednom dretvom najveci dio vremena
besposlen.
2014/2015 GB
14 / 16
Zamislite nekoliko dretvi koje istovremeno mijenjaju stanje bankovnog racuna. Data-corruption problemi
mogu nastati ako vise dretvi istovremeno pristupa istim podacima.
Ako vise dretvi pristupa zajednickom resursu na nacin koji vodi do konflikta kaze se da je to race condition.
race condition se izbjegava tako sto se zabrani da vise dretvi istovremeno pristupa nekom dijelu programa
gdje mogu nastati problemi (tzv. critical region).
Nekad se u programima javljaju situacije kad vise dretvi dobiva kljuc za nekoliko zajednickih objekata. To
moze izazvati deadlock (zaglavljivanje) tj. situaciju kad svaka dretva ima kljuc za jedan od objekata i ceka
na kljuc za druge objekte.
Deadlock se izbjegava uporabom tzv. resource ordering-a. Tu se uspostavlja red po kome se daju kljucevi
objekata i osigurava se da svaka dretva dobiva kljuc po tom redu.
2014/2015 GB
15 / 16
Program s dretvom
1
2
3
4
5
6
7
8
9
10
11
Rezultat:
2014/2015 GB
16 / 16