+ } while (!succ);
+ //model_print("Write: %d\n", new_data);
+}
+
+void threadA(void *arg) {
+ Data *dataA = (Data*) malloc(sizeof(Data));
+ dataA->data1 = 3;
+ dataA->data2 = 2;
+ dataA->data3 = 1;
+ write(dataA);
+}
+
+void threadB(void *arg) {
+ Data *dataB = read();
+ printf("ThreadB data1: %d\n", dataB->data1);
+ printf("ThreadB data2: %d\n", dataB->data2);
+ printf("ThreadB data3: %d\n", dataB->data3);
+}
+
+void threadC(void *arg) {
+ Data *dataC = read();
+ printf("ThreadC data1: %d\n", dataC->data1);
+ printf("ThreadC data2: %d\n", dataC->data2);
+ printf("ThreadC data3: %d\n", dataC->data3);
+}