---
title: SO Lista 10
tags: SO
author: Mateusz Reis
---
# SO LISTA 10
## Zadanie 6
- przy wątkach nie możemy czekać na dowolony wątek ponieważ wątki nie są zależne od rodzica tzn. wątek przy zakończeniu nie wysyła sygnału do rodzica
## Zadanie 3
- **sytuacja wyścigu** - stan w którym więcej niż 2 wątki probują użyć tych samych danych, jednak z powodu algorytmu zmiany kontekstu możemy zmienić jeden wątek na drugi w dowolonym momencie co może powodować nieprzewidywalne skutki
W naszej funkcji operacja inkrementacji tally składa się z trzech operacji
- załadowania zmiennej do rejestru
- dodanie 1 do wartości
- zapisanie do rejestru
W każdym momencie pomiędzy dwoma operacjami możemy zmienić wątek, dlatego przy dwóch procesach możemy otrzymać wyniki od 50 do 100
W przypadku otrzymania wartości mniejszej niż 100 mogła zajść następująca sytuacja:
|nr operacji |Wątek 1|Wątek 2|
|-|-|-|
|1|load|-|
|2|-|load|
|3|add 1|-|
|4|-|add 1|
|5|store|-|
|6|-|store|
|...|...|...|
Po tych operacjach zmienna `tally` będzie miała wartość 1 zamiast 2, a po 50 iteracjach w ten sposób otrzymamy 50 zamiast 100. Oczywiście operacje mogą przeplatać się dowolonie dlatego możliwe wyniki są z przedziału 50-100. W przypadku k wątków sytuacja wygląda analogicznie i możliwe wartości będą w przedziale od 50 do 50*k
## Zadanie 7
- **pętla zdarzeń** - pętla która czeka na zdarzenia i obsługuje je. Oprócz współbieżności znajduje zastosowania w grach, gdzie czekamy na wciścniecie przycisku przez gracza.