Professional Documents
Culture Documents
Lec 7
Lec 7
Programowanie obiektowe
obiektowe w
w jjezyku
˛ezyku
˛ C++
C++
POLITECHNIKA WARSZAWSKA - wydz. Mechaniczny Energetyki i Lotnictwa
Stanisław Gepner
sgepner@meil.pw.edu.pl
Programowanie
Programowanie obiektowe
obiektowe w
w jjezyku
˛ezyku
˛ C++
C++
POLITECHNIKA WARSZAWSKA - wydz. Mechaniczny Energetyki i Lotnictwa
Wyjątki
my tu się moga my
dziać złe
try{ protected protected }
code rzeczy! code
throw
Wyjątki
int main ()
{
try
{
throw 2;
}
catch ( int e )
{
cout << " An exception occurred . Exception Nr . " << e << ’\ n ’;
}
return 0;
}
Programowanie
Programowanie obiektowe
obiektowe w
w jjezyku
˛ezyku
˛ C++
C++
POLITECHNIKA WARSZAWSKA - wydz. Mechaniczny Energetyki i Lotnictwa
Wyjątki
Wyjątki
• Można zagnieżdżać
try {
try {
// Code that does some serious stuff
throw 4;
}
catch ( int e ) {
cout << " App thrown an exeption , terhrowing ! " << endl ;
ostringstream os ;
os << " Value is : " << e ;
throw os . str () ;
}
}
catch ( string e )
{
cout << " An exception occurred . String " << e << endl ;
}
catch (...) // domyslnie
{
cout << " Default exception !! " << endl ;
}
Programowanie
Programowanie obiektowe
obiektowe w
w jjezyku
˛ezyku
˛ C++
C++
POLITECHNIKA WARSZAWSKA - wydz. Mechaniczny Energetyki i Lotnictwa
exception
exception
Proces vs Wątek
Gdy jest nas wielu
Process 1
Process
T3
• Niezależny T1
T2
Wątek
Nowy wątek
void foo () {
for ( int i =0; i <10; ++ i ) {
cout << " foo says : foo sleeps "
<< i << endl ;
sleep ( 1 ) ; foo() bar(0)
}
main thread
}
void bar ( int x ) {
for ( int i =0; i <10; ++ i ) {
cout << " bar says : x = " << x <<
" bar sleeps " << i <<
endl ;
sleep ( 1 ) ;
}
}
...
std :: thread first ( foo ) ;
std :: thread second ( bar ,0) ;
Programowanie
Programowanie obiektowe
obiektowe w
w jjezyku
˛ezyku
˛ C++
C++
POLITECHNIKA WARSZAWSKA - wydz. Mechaniczny Energetyki i Lotnictwa
Wątki
join detach
foo() bar(0)
# include < thread >
main thread
...
std :: thread first ( foo ) ;
std :: thread second ( bar ,0) ;
// detach first from main
first . detach ()
...
// main thread does sth
... first terminates
// wait for second to terminate
second . join () main waits
for second
Programowanie
Programowanie obiektowe
obiektowe w
w jjezyku
˛ezyku
˛ C++
C++
POLITECHNIKA WARSZAWSKA - wydz. Mechaniczny Energetyki i Lotnictwa
Wątki
Dostęp do zasobów
Procesy
fork