-
Notifications
You must be signed in to change notification settings - Fork 3.5k
Expand file tree
/
Copy pathtest_pthread_locale.c
More file actions
47 lines (38 loc) · 1.08 KB
/
test_pthread_locale.c
File metadata and controls
47 lines (38 loc) · 1.08 KB
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
38
39
40
41
42
43
44
45
46
47
/*
* Copyright 2017 The Emscripten Authors. All rights reserved.
* Emscripten is available under two separate licenses, the MIT license and the
* University of Illinois/NCSA Open Source License. Both these licenses can be
* found in the LICENSE file.
*/
#include <assert.h>
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <emscripten/threading.h>
locale_t do_test() {
pthread_t thread = pthread_self();
locale_t loc = uselocale((locale_t)0);
printf(" pthread_self() = %p\n", thread);
printf(" current locale: %p\n", loc);
assert(loc);
return loc;
}
void *thread_test(void *t) {
puts("Doing test in child thread");
pthread_exit((void*)do_test());
}
int main (int argc, char *argv[]) {
puts("Doing test in main thread");
locale_t main_loc = do_test();
locale_t child_loc;
pthread_t thread;
int rtn;
rtn = pthread_create(&thread, NULL, thread_test, (void *)NULL);
printf("create: %d\n", rtn);
assert(!rtn);
rtn = pthread_join(thread, (void**)&child_loc);
assert(!rtn);
assert(main_loc == child_loc);
return 0;
}