Click here to Skip to main content
15,876,783 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
AnswerRe: purpose of parameter value of -1 ? Pin
CPallini10-Feb-24 22:32
mveCPallini10-Feb-24 22:32 
GeneralRe: purpose of parameter value of -1 ? Pin
Richard MacCutchan11-Feb-24 2:19
mveRichard MacCutchan11-Feb-24 2:19 
GeneralRe: purpose of parameter value of -1 ? Pin
CPallini11-Feb-24 4:12
mveCPallini11-Feb-24 4:12 
QuestionUsing /bin/sh "partially " works Pin
Salvatore Terress9-Feb-24 6:10
Salvatore Terress9-Feb-24 6:10 
AnswerRe: Using /bin/sh "partially " works Pin
Mircea Neacsu9-Feb-24 6:47
Mircea Neacsu9-Feb-24 6:47 
AnswerRe: Using /bin/sh "partially " works Pin
k50549-Feb-24 6:59
mvek50549-Feb-24 6:59 
AnswerRe: Using /bin/sh "partially " works Pin
jschell9-Feb-24 12:29
jschell9-Feb-24 12:29 
QuestionConcurrent linked list Pin
cod3Ninj47-Feb-24 23:40
cod3Ninj47-Feb-24 23:40 
Hi, I'm working on implementing a concurrent queue (implemented as single linked list) and I've encountered a problem. The structure of my linked list node looks like this:
C
struct queue {
    queue *head, *tail;
    pthread_mutex_t head_mut, tail_mut;
}
struct node {
    _Atomic(node*) next;
    int item;
};

I am currently implementing pop and push operations, both of them have their own separate mutex - tail_mut and head_mut respectively.
The list always includes a dummy node at the beginning.

I'm encountering an issue when there's only one element in the list (the dummy node plus this one element). I can't figure out how to handle the case where one thread is trying to push an element and another is trying to pop an element from the list.

The problem arises when we perform a pop operation first and change the head to head->next. In this scenario, another thread can still push elements to the list by adding them to the end of the list (tail). However, the list has only one element (the one that is being popped = tail), so i must find a solution to somehow block this operation or to signal 'pushing' thread that it should push to the head not to tail.

Acquiring the tail mutex would obviously solve the problem, but I'm looking for a potentially more efficient solution (so I would not block push operations by acquiring the tail mutex).

Is there a more efficient way to handle this situation? Any suggestions would be greatly appreciated.
AnswerRe: Concurrent linked list Pin
jschell9-Feb-24 12:32
jschell9-Feb-24 12:32 
Questionget_string memory leak? Pin
mike74115-Feb-24 9:57
mike74115-Feb-24 9:57 
AnswerRe: get_string memory leak? Pin
Dave Kreskowiak5-Feb-24 10:03
mveDave Kreskowiak5-Feb-24 10:03 
GeneralRe: get_string memory leak? Pin
Mircea Neacsu5-Feb-24 14:13
Mircea Neacsu5-Feb-24 14:13 
GeneralRe: get_string memory leak? Pin
mike74115-Feb-24 20:05
mike74115-Feb-24 20:05 
GeneralRe: get_string memory leak? Pin
Mircea Neacsu5-Feb-24 20:22
Mircea Neacsu5-Feb-24 20:22 
GeneralRe: get_string memory leak? Pin
Dave Kreskowiak6-Feb-24 4:39
mveDave Kreskowiak6-Feb-24 4:39 
GeneralRe: get_string memory leak? Pin
Mircea Neacsu6-Feb-24 6:59
Mircea Neacsu6-Feb-24 6:59 
GeneralRe: get_string memory leak? Pin
Dave Kreskowiak6-Feb-24 12:22
mveDave Kreskowiak6-Feb-24 12:22 
GeneralRe: get_string memory leak? Pin
Mircea Neacsu6-Feb-24 12:28
Mircea Neacsu6-Feb-24 12:28 
AnswerRe: get_string memory leak? Pin
jschell6-Feb-24 5:02
jschell6-Feb-24 5:02 
GeneralRe: get_string memory leak? Pin
k50546-Feb-24 5:15
mvek50546-Feb-24 5:15 
GeneralRe: get_string memory leak? Pin
RedDk6-Feb-24 10:06
RedDk6-Feb-24 10:06 
GeneralRe: get_string memory leak? Pin
jschell7-Feb-24 5:22
jschell7-Feb-24 5:22 
GeneralRe: get_string memory leak? Pin
charlieg12-Feb-24 23:04
charlieg12-Feb-24 23:04 
Question"connect" with "lambda" C++ code analysis , please. Pin
Salvatore Terress3-Feb-24 15:01
Salvatore Terress3-Feb-24 15:01 
SuggestionRe: "connect" with "lambda" C++ code analysis , please. Pin
k50543-Feb-24 15:55
mvek50543-Feb-24 15:55 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.