From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pl1-x629.google.com (mail-pl1-x629.google.com [IPv6:2607:f8b0:4864:20::629]) by sourceware.org (Postfix) with ESMTPS id E80593858C20 for ; Fri, 9 Jun 2023 01:44:20 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E80593858C20 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=optusnet.com.au Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-1b034ca1195so2649095ad.2 for ; Thu, 08 Jun 2023 18:44:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1686275059; x=1688867059; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:mail-followup-to:reply-to:message-id :subject:to:date:from:sender:from:to:cc:subject:date:message-id :reply-to; bh=Xvfd4NozHWrJousnD8p4ll/y8XgLnn0LLuRlr8tByic=; b=fSHmM3FQWJURBh6vOO2CrayWxs+SpIxBALnbC4BultRi499Lvkd6/YDKi7uJ3Rpw+Z Tb+Gq+ccG9qRv4ha2shZA7W5OYkGjM0q59Xg6JVkHiXk/C/wscVkZMuiaDsvIRZ6wFI/ SxNaQG5etl7hKAwBVQJ3H0Loqtcsg0UBOLOsK3d2KcGGFPE/qx6OfyftaxzTCcNr0IlI A8M4CwM5hstntyIVPhlCgQdxmGuqY9uICRIBzMBCySVX1LoDXdoHdGycDQtl77vRnD30 DCwCkbxkNyww4tRElRk7KTi0ial2t2V7osKitwynRxqC36cSmzKeFOt+WwzOfRCZjWsu tEIg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686275059; x=1688867059; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:mail-followup-to:reply-to:message-id :subject:to:date:from:sender:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=Xvfd4NozHWrJousnD8p4ll/y8XgLnn0LLuRlr8tByic=; b=V83+19ATvUwg4eXMJEm5PPg/Sz4/TsHPRrhwJKqtHpRa8G0e7frmZKnxTwOgfB5Ez6 g8flGF//8HTC5BjpIL+gj/uE/P4hDM8uJvQztbVHBVOYaETPLA2EuZiTPztjS/guxS5B 2q2EI+TmcrP3O3vGC1r7kvwF6UU38F20suOepYZBjxfHVgxDesGtSixQScjDNW1oByQL OQ8McEH/oZTbdne8f/GSqGghzPbQ6dMVIMshXEktWQAjRcrTSTsyhY54SFUF0rPbrfLD 5px50j5I/FdJYIIqAQhN71elpxKGsdwhaJXd9qr+I3v4eimNXchqwSHpVOpJKn3iHDtf 5N3g== X-Gm-Message-State: AC+VfDwI6bFXxCYovmvNz3AHzapcJktaJ7x/K8zqCg8n3viowsl3jxzZ vRCyAKprmPxjlIgPGArrT/M6gNRg5/s= X-Google-Smtp-Source: ACHHUZ5WiKJFBDlymLG+1FaPwddgVZL7GFjTPmiOOb1BRxYbmdGr/ofgQ23qjj2pYD/MDKKKb3SHCw== X-Received: by 2002:a17:902:d4c7:b0:1ab:29bc:bd87 with SMTP id o7-20020a170902d4c700b001ab29bcbd87mr32124plg.35.1686275059516; Thu, 08 Jun 2023 18:44:19 -0700 (PDT) Received: from slk15.local.net (n58-108-90-185.meb1.vic.optusnet.com.au. [58.108.90.185]) by smtp.gmail.com with ESMTPSA id z11-20020a1709028f8b00b001ab13f1fa82sm2012431plo.85.2023.06.08.18.44.17 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 08 Jun 2023 18:44:19 -0700 (PDT) Sender: Duncan Roe From: Duncan Roe X-Google-Original-From: Duncan Roe Date: Fri, 9 Jun 2023 11:44:15 +1000 To: cygwin@cygwin.com Subject: Re: Memory Barriers at pthread using CYGWIN Message-ID: Reply-To: duncan_roe@optusnet.com.au Mail-Followup-To: cygwin@cygwin.com References: MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-Spam-Status: No, score=-0.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On Thu, Jun 08, 2023 at 05:29:59PM +0300, cygwin wrote: > 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 > 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) > #include > #include > > 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; > } WFFM (compiled as a C program) Cheers ... Duncan.