diff options
author | fadhil riyanto <me@fadev.org> | 2024-09-26 16:57:40 +0700 |
---|---|---|
committer | fadhil riyanto <me@fadev.org> | 2024-09-26 16:57:40 +0700 |
commit | 5e1b67d4990512c3b3a14b4be94ee050afc45e29 (patch) | |
tree | 4dab054072fd9bbe49e20a2c70747f77f0e1a8cb /test | |
parent | d2502dbd95083fe4fd7cb1e2a0197267b2b08ca5 (diff) |
test mutex
Signed-off-by: fadhil riyanto <me@fadev.org>
Diffstat (limited to 'test')
-rw-r--r-- | test/mutex.c | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/test/mutex.c b/test/mutex.c new file mode 100644 index 0000000..8130fec --- /dev/null +++ b/test/mutex.c @@ -0,0 +1,47 @@ + +#include <bits/pthreadtypes.h> +#include <pthread.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <time.h> +#include <unistd.h> + +pthread_t tid[2]; +int counter; +pthread_mutex_t lock; + +void *trythis(void *arg) { + pthread_mutex_lock(&lock); + unsigned long i = 0; + counter += 1; + printf("\n Job %d has started\n", counter); + + for (i = 0; i < (0xFFFFFFFF); i++) + ; + printf("\n Job %d has finished\n", counter); + pthread_mutex_unlock(&lock); + return NULL; +} + +int main(void) { + int i = 0; + int error; + + pthread_mutex_init(&lock, NULL); + + while (i < 2) { + error = pthread_create(&(tid[i]), NULL, &trythis, NULL); + if (error != 0) + printf("\nThread can't be created : [%s]", + strerror(error)); + i++; + } + + pthread_join(tid[0], NULL); + pthread_join(tid[1], NULL); + + pthread_mutex_destroy(&lock); + + return 0; +} |