{
int32_t *bin = queue->write_prepare();
store_32(bin, 1);
+ *bin = 1;
printf("write_bin %d, val %d\n", bin, 1);
- queue->write_publish();
+ queue->write_publish(bin);
}
void threadB(struct mpmc_boundq_1_alt<int32_t, sizeof(int32_t)> *queue)
while (bin = queue->read_fetch()) {
printf("Read: %d\n", load_32(bin));
printf("read_bin %d, val %d\n", bin, load_32(bin));
- queue->read_consume();
+ printf("Read: %d\n", *bin);
+ queue->read_consume(bin);
}
}
{
int32_t *bin = queue->write_prepare();
store_32(bin, 1);
- queue->write_publish();
+ *bin = 1;
+ queue->write_publish(bin);
while (bin = queue->read_fetch()) {
printf("Read: %d\n", load_32(bin));
- queue->read_consume();
+ printf("Read: %d\n", *bin);
+ queue->read_consume(bin);
}
}
int user_main(int argc, char **argv)
{
- struct mpmc_boundq_1_alt<int32_t, sizeof(int32_t)> queue;
+ struct mpmc_boundq_1_alt<int32_t, 2> queue;
thrd_t A[MAXWRITERS], B[MAXREADERS], C[MAXRDWR];
/* Note: optarg() / optind is broken in model-checker - workaround is
printf("Adding initial element\n");
int32_t *bin = queue.write_prepare();
store_32(bin, 17);
+ *bin, 17;
printf("init_write_bin %d, val %d\n", bin, 17);
- queue.write_publish();
+ queue.write_publish(bin);
#endif
printf("Start threads\n");