public inbox for cygwin@cygwin.com
 help / color / mirror / Atom feed
* Memory Barriers at pthread using CYGWIN
@ 2023-06-08 14:29 Mümin A.
  2023-06-08 14:37 ` [EXTERNAL] " Lavrentiev, Anton (NIH/NLM/NCBI) [C]
  2023-06-09  1:44 ` Duncan Roe
  0 siblings, 2 replies; 6+ messages in thread
From: Mümin A. @ 2023-06-08 14:29 UTC (permalink / raw)
  To: cygwin


[-- Attachment #1.1: Type: text/plain, Size: 140 bytes --]

Hi,

I wrote a simple test for pthread_barrier_wait. it won't work as expected.

result should be

r1 = 1, r2 = 1

Thanks,
Mümin

[-- Attachment #2: CMakelists.txt --]
[-- Type: text/plain, Size: 295 bytes --]

cmake_minimum_required(VERSION 3.26)

project(test)

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)


add_definitions(-D__POSIX_VISIBLE=200112 -D_POSIX_C_SOURCE=200112)

add_executable(test main.cpp)

target_link_libraries(test pthread)

[-- Attachment #3: main.cpp --]
[-- Type: text/plain, Size: 738 bytes --]

#include <stdio.h>
#include <pthread.h>

int x = 0;
int y = 0;
int r1 = 0;
int r2 = 0;

pthread_barrier_t barrier;

void* thread1(void* arg) {
    y = 1;
    pthread_barrier_wait(&barrier);  // Memory barrier
    r1 = x;
    return NULL;
}

void* thread2(void* arg) {
    x = 1;
    pthread_barrier_wait(&barrier);  // Memory barrier
    r2 = y;
    return NULL;
}

int main() {
    pthread_t t1, t2;

    pthread_barrier_init(&barrier, NULL, 2);

    pthread_create(&t1, NULL, thread1, NULL);
    pthread_create(&t2, NULL, thread2, NULL);

    pthread_join(t1, NULL);
    pthread_join(t2, NULL);

    printf("r1 = %d, r2 = %d\n", r1, r2);

    pthread_barrier_destroy(&barrier);

    return 0;
}

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2023-06-09  1:44 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-06-08 14:29 Memory Barriers at pthread using CYGWIN Mümin A.
2023-06-08 14:37 ` [EXTERNAL] " Lavrentiev, Anton (NIH/NLM/NCBI) [C]
2023-06-08 22:58   ` Mümin A.
2023-06-09  0:19     ` Kevin Schnitzius
2023-06-09  0:22     ` Takashi Yano
2023-06-09  1:44 ` Duncan Roe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).