This shows you the differences between two versions of the page.
so:laboratoare:laborator-09 [2021/05/03 11:50] maria.mihailescu [Exercițiul 3 - Interlocked] Fix style |
so:laboratoare:laborator-09 [2022/05/06 13:38] (current) costin.carabas [Exercițiul 6 - Barrier] |
||
---|---|---|---|
Line 858: | Line 858: | ||
| Incrementarea unui semafor | ''sem_post'' | [[#incrementarea|ReleaseSemaphore]] | | | Incrementarea unui semafor | ''sem_post'' | [[#incrementarea|ReleaseSemaphore]] | | ||
| Distrugerea unui semafor | ''sem_destroy''/''sem_close'' | [[#distrugerea1|CloseHandle]] | | | Distrugerea unui semafor | ''sem_destroy''/''sem_close'' | [[#distrugerea1|CloseHandle]] | | ||
- | | Thread Local Storage | [[https://gcc.gnu.org/onlinedocs/gcc/Thread-Local.html|__thread]] | [[#thread_local_storage|TlsAlloc, TlsSetValue, TlsGetValue, TlsFree]] | | + | | Thread Local Storage | [[https://gcc.gnu.org/onlinedocs/gcc/Thread-Local.html|__thread]], [[https://linux.die.net/man/3/pthread_key_create|pthread_key_create]], [[https://linux.die.net/man/3/pthread_setspecific|pthread_setspecific]], [[https://linux.die.net/man/3/pthread_getspecific|pthread_getspecific]], [[https://linux.die.net/man/3/pthread_key_delete|pthread_key_delete]] | [[#thread_local_storage|TlsAlloc, TlsSetValue, TlsGetValue, TlsFree]] | |
- | ====== Exerciții de laborator ====== | + | ====== Exerciții ====== |
- | + | ||
- | + | ||
- | ===== Windows ===== | + | |
<note important> | <note important> | ||
Line 878: | Line 875: | ||
Pentru mai multe informații despre folosirea utilitarului git, urmați ghidul de la https://gitimmersion.com. | Pentru mai multe informații despre folosirea utilitarului git, urmați ghidul de la https://gitimmersion.com. | ||
</note> | </note> | ||
+ | |||
+ | ===== Windows ===== | ||
<note tip> Pentru a deschide proiectul Visual Studio conținând exercițiile, deschideți fișierul lab09.sln. </note> | <note tip> Pentru a deschide proiectul Visual Studio conținând exercițiile, deschideți fișierul lab09.sln. </note> | ||
Line 933: | Line 932: | ||
typedef struct { | typedef struct { | ||
HANDLE hGuard; /* mutex to protect internal variable access */ | HANDLE hGuard; /* mutex to protect internal variable access */ | ||
- | HANDLE hEvent; /* auto-resetable event */ | + | HANDLE hEvent; /* manual resetable event */ |
DWORD dwCount; /* number of threads to have reached the barrier */ | DWORD dwCount; /* number of threads to have reached the barrier */ | ||
DWORD dwThreshold; /* barrier limit */ | DWORD dwThreshold; /* barrier limit */ | ||
Line 975: | Line 974: | ||
* Implementați vizualizarea unui timer; spre exemplu, un fir de execuție care alternează două operații: draw și sleep. (desenează, se oprește, desenează, iar se oprește și tot așa; intervalul unei operații poate fi același) | * Implementați vizualizarea unui timer; spre exemplu, un fir de execuție care alternează două operații: draw și sleep. (desenează, se oprește, desenează, iar se oprește și tot așa; intervalul unei operații poate fi același) | ||
*/ | */ | ||
- | ===== Soluții ===== | ||
- | |||
- | [[http://elf.cs.pub.ro/so/res/laboratoare/lab09-sol.zip | Soluţii laborator 9]] | ||
- | ~~NOCACHE~~ |