source: CIVL/examples/pthread/esbmc/reorder_2_false.c@ 83af34d

1.23 2.0 main test-branch
Last change on this file since 83af34d was e3151da, checked in by Ziqing Luo <ziqing@…>, 11 years ago

re-organized example directory

git-svn-id: svn://vsl.cis.udel.edu/civl/trunk@1763 fb995dde-84ed-4084-dfe6-e5aef3e2452c

  • Property mode set to 100644
File size: 1.8 KB
Line 
1#include <stdio.h>
2#include <stdlib.h>
3#include <pthread.h>
4
5#define USAGE "./reorder <param1> <param2>\n"
6
7static int iSet = 2;
8static int iCheck = 2;
9
10static int a = 0;
11static int b = 0;
12
13void *setThread(void *param);
14void *checkThread(void *param);
15void set();
16int check();
17
18int main(int argc, char *argv[]) {
19 int i, err;
20
21 if (argc != 1) {
22 if (argc != 3) {
23 fprintf(stderr, USAGE);
24 exit(-1);
25 } else {
26 sscanf(argv[1], "%d", &iSet);
27 sscanf(argv[2], "%d", &iCheck);
28 }
29 }
30
31 //printf("iSet = %d\niCheck = %d\n", iSet, iCheck);
32
33 pthread_t setPool[iSet];
34 pthread_t checkPool[iCheck];
35
36 for (i = 0; i < iSet; i++) {
37 if (0 != (err = pthread_create(&setPool[i], NULL, &setThread, NULL))) {
38 fprintf(stderr, "Error [%d] found creating set thread.\n", err);
39 exit(-1);
40 }
41 }
42
43 for (i = 0; i < iCheck; i++) {
44 if (0 != (err = pthread_create(&checkPool[i], NULL, &checkThread,
45 NULL))) {
46 fprintf(stderr, "Error [%d] found creating check thread.\n", err);
47 exit(-1);
48 }
49 }
50
51 for (i = 0; i < iSet; i++) {
52 if (0 != (err = pthread_join(setPool[i], NULL))) {
53 fprintf(stderr, "pthread join error: %d\n", err);
54 exit(-1);
55 }
56 }
57
58 for (i = 0; i < iCheck; i++) {
59 if (0 != (err = pthread_join(checkPool[i], NULL))) {
60 fprintf(stderr, "pthread join error: %d\n", err);
61 exit(-1);
62 }
63 }
64
65 return 0;
66}
67
68void *setThread(void *param) {
69 a = 1;
70 b = -1;
71
72 return NULL;
73}
74
75void *checkThread(void *param) {
76 if (! ((a == 0 && b == 0) || (a == 1 && b == -1))) {
77 fprintf(stderr, "Bug found!\n");
78 ERROR:
79 goto ERROR;
80 }
81
82 return NULL;
83}
84
Note: See TracBrowser for help on using the repository browser.