summaryrefslogtreecommitdiff
path: root/librabbitmq/win32/threads.c
blob: 050af9b2678de5f3040608fa01a0ed3f95bfb902 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// Copyright 2007 - 2021, Alan Antonuk and the rabbitmq-c contributors.
// SPDX-License-Identifier: mit

#include "threads.h"

#include <stdlib.h>

DWORD pthread_self(void) { return GetCurrentThreadId(); }

int pthread_mutex_init(pthread_mutex_t *mutex, void *attr) {
  if (!mutex) {
    return 1;
  }
  InitializeSRWLock(mutex);
  return 0;
}

int pthread_mutex_lock(pthread_mutex_t *mutex) {
  if (!mutex) {
    return 1;
  }
  AcquireSRWLockExclusive(mutex);
  return 0;
}

int pthread_mutex_unlock(pthread_mutex_t *mutex) {
  if (!mutex) {
    return 1;
  }
  ReleaseSRWLockExclusive(mutex);
  return 0;
}

int pthread_mutex_destroy(pthread_mutex_t *mutex) {
  /* SRW's do not require destruction. */
  return 0;
}