X-Recipient: archive-cygwin AT delorie DOT com DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 48A6238708D3 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cygwin.com; s=default; t=1610216624; bh=C+49JTNRSm1VUw0wnYUTyeT4GvswnOMUuLTThgdYfTo=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=V7burmxrdzNTF4EGWSRYGUoZue5KY47DHzBKHdqjvKiQVF33JtGQUOz86MXr0H2Ld cmtYRXRKLVBQsWqRKZrm/C/ao28IaWzv4NF9bGvK6CcLANf2KvqBOImMAHtf42suCM DvqFP4nSUmXgTmBIi5b/D6fWszcnQbe948An2PaY= X-Original-To: cygwin AT cygwin DOT com Delivered-To: cygwin AT cygwin DOT com DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 0718138708C0 To: "cygwin AT cygwin DOT com" Subject: PTHREAD_MUTEX_SHARED on Cygwin Message-ID: <657c8576-2715-8c80-a59a-23453306230f@netcologne.de> Date: Sat, 9 Jan 2021 19:23:39 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.6.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------EAE2AEE4CB4327D20C84C5FF" Content-Language: de-DE X-Spam-Status: No, score=-3.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: cygwin AT cygwin DOT com X-Mailman-Version: 2.1.29 List-Id: General Cygwin discussions and problem reports List-Archive: List-Post: List-Help: List-Subscribe: , From: Thomas Koenig via Cygwin Reply-To: Thomas Koenig Sender: "Cygwin" This is a multi-part message in MIME format. --------------EAE2AEE4CB4327D20C84C5FF Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Hi, there is a branch of gfortran for implementing coarrays based on a shared memory implementation instead of MPI, the devel_coarray/native branch. I tried it out on Cygwin, but it doesn't work there (hangs on the first sync). The branch uses pthread mutexes and condition variables with PTHREAD_PROCESS_SHARED for synchronization between processes. I also ran the attached test program, which gave the output pthread_mutexattr_setpshared(&mattr, PTHREAD_PROCESS_SHARED)failed: No error Is it correct that PTHREAD_PROCESS_SHARED is not supported on Cygwin? Is it supported for condition variables, or is the fact that it is reported as working an oversight? If PTHREAD_PROCESS_SHARED does not work, are there known workarounds? Best regards Thomas --------------EAE2AEE4CB4327D20C84C5FF Content-Type: text/x-csrc; charset=UTF-8; name="s.c" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="s.c" #include #include #include #include #include #include #include #define ERR_CHK(x) \ do { \ if (x) { \ perror(#x "failed"); \ exit(1); \ } \ } while (0) int main(int argc, char **argv) { pthread_condattr_t cattr; pthread_mutexattr_t mattr; pthread_mutex_t *m; pthread_cond_t *c; void *mem; ERR_CHK((mem = mmap(0, 0x1000, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANON, -1, 0)) == MAP_FAILED); m = mem; c = mem + 0x800; ERR_CHK(pthread_mutexattr_init(&mattr)); ERR_CHK(pthread_mutexattr_setpshared(&mattr, PTHREAD_PROCESS_SHARED)); ERR_CHK(pthread_mutex_init(m, &mattr)); ERR_CHK(pthread_mutexattr_destroy(&mattr)); ERR_CHK(pthread_condattr_init(&cattr)); ERR_CHK(pthread_condattr_setpshared(&cattr, PTHREAD_PROCESS_SHARED)); ERR_CHK(pthread_cond_init(c, &cattr)); ERR_CHK(pthread_condattr_destroy(&cattr)); printf("Success\n"); return 0; } --------------EAE2AEE4CB4327D20C84C5FF Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline -- Problem reports: https://cygwin.com/problems.html FAQ: https://cygwin.com/faq/ Documentation: https://cygwin.com/docs.html Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple --------------EAE2AEE4CB4327D20C84C5FF--