| Hint | Answer | % Correct |
|---|---|---|
| }; | 100%
| |
| } | 100%
| |
| } | 100%
| |
| } | 100%
| |
| } | 100%
| |
| } | 100%
| |
| } | 100%
| |
| append(ready_q, p); | 100%
| |
| append(s->q, p); | 100%
| |
| bool key = true; | 100%
| |
| bool key = true; | 100%
| |
| bool locked; | 100%
| |
| else | 100%
| |
| else | 100%
| |
| if(s->value < 0){ | 100%
| |
| if(s->value <= 0){ | 100%
| |
| int value; | 100%
| |
| process_t *p = get(ready_q); | 100%
| |
| process_t *p = get(s->q); | 100%
| |
| queue *q; | 100%
| |
| s->locked = false; | 100%
| |
| s->locked = false; | 100%
| |
| s->locked = false;} | 100%
| |
| s->value--; | 100%
| |
| s->value = value; | 100%
| |
| s->locked = false; | 100%
| |
| s->locked = false; | 100%
| |
| Deklarace | struct Semaphore{ | 100%
|
| s->value++; | 100%
| |
| swap(&(s->locked), &key); | 100%
| |
| swap(&(s->locked), &key); | 100%
| |
| switch(); | 100%
| |
| Inicializace | void init(struct Semaphore *s, unsigned value){ | 100%
|
| Lock Swap | void lock(struct Semaphore *s){ | 100%
|
| Unlock Swap | void unlock(struct Semaphore *s){ | 100%
|
| while(key == true){ | 100%
| |
| while(key == true){ | 100%
| |
| } | 50%
| |
| } | 50%
| |
| } | 50%
| |
| } | 50%
| |
| append(ready_q, p); | 50%
| |
| append(s->q, p); | 50%
| |
| else | 50%
| |
| else | 50%
| |
| if(s->value < 0){ | 50%
| |
| if(s->value <= 0){ | 50%
| |
| process_t *p = get(ready_q); | 50%
| |
| process_t *p = get(s->q); | 50%
| |
| s->locked = false; | 50%
| |
| s->locked = false; | 50%
| |
| s->locked = false; | 50%
| |
| s->locked = false; | 50%
| |
| s->value--; | 50%
| |
| s->value++; | 50%
| |
| switch(); | 50%
| |
| Lock TandS | void lock(struct Semaphore *s){ | 50%
|
| Unlock TandS | void unlock(struct Semaphore *s){ | 50%
|
| while(s->locked); | 50%
| |
| while(s->locked); | 50%
| |
| while(TandS(s->locked)) | 50%
| |
| while(TandS(s->locked)) | 50%
|