c - Weird issue with returning empty struct instead of NULL -



c - Weird issue with returning empty struct instead of NULL -

context

i working on consumer & producer multi-threaded program. programme has shared variable num_elem incremented in producer , decremented in consumer.

num elem providing info circular buffer using struct queue, such queue stores arrays of words beingness read file.

if increment changed beingness within of producer beingness function called producer, communication between producer , consumer fixed. else, if code producer called function (as consumer is), then used boolean changed true, when in fact not beingness used.

the code each below.

problem

if increment called outside of producer, values used changed true. why beingness changed when beingness called within of producer, , not when called function within of producer?

code producer

item_t *item = null; (i = 0; < queue_size; i++) { if (queue[(next_index + i) % queue_size].used == false) { item = &queue[(next_index + i) % queue_size]; item->used = true; num_elem++; next_index = (i + 1) % queue_size; } }

code consumer

item_t *consume_item() { (i = 0; < queue_size; i++) { if (queue[i].used == true) { item_t *item = &queue[i]; item->used = false; num_elem--; homecoming item; } } homecoming null;

here github repo, if see whole code

in bad version, need add together break; after line 150.

c multithreading producer-consumer

Comments

Popular posts from this blog

php - How to pass multiple values from url -

xslt - DocBook 5 to PDF transform failing with error: "fo:flow" is missing child elements. Required content model: marker* -

database - php search bar when I press submit with nothing in the search bar it shows all the data -