mirror of
https://github.com/tezc/sc.git
synced 2025-01-28 07:03:06 +08:00
36 lines
800 B
Markdown
36 lines
800 B
Markdown
### Condition
|
|
|
|
### Overview
|
|
|
|
- Condition wrapper.
|
|
- Provides passing data between signal and wait threads.
|
|
- Normally, if no thread waits on a condition, signal is missed. This
|
|
implementation differs as it will keep a result variable when 'signal' is
|
|
called. Signal will mark the condition 'done', so when another thread calls
|
|
wait(), it won't be blocked, it will return immediately with the user
|
|
provided data.
|
|
|
|
### Usage
|
|
|
|
```c
|
|
#include "sc_cond.h"
|
|
|
|
#include <stdio.h>
|
|
|
|
int main()
|
|
{
|
|
struct sc_cond cond;
|
|
|
|
sc_cond_init(&cond); // Init once
|
|
|
|
sc_cond_signal(&cond, "test"); // Call this on thread-1
|
|
char* p = sc_cond_wait(&cond); // Call this on another thread.
|
|
|
|
printf("%s \n", p); // Prints "test"
|
|
|
|
sc_cond_term(&cond); // Destroy
|
|
|
|
return 0;
|
|
}
|
|
|
|
``` |