From owner-freebsd-bugs Wed Jan 10 10:14:32 2001 Delivered-To: freebsd-bugs@freebsd.org Received: from unix-server.local.g-em.pl (gateway.g-em.pl [212.45.233.230]) by hub.freebsd.org (Postfix) with ESMTP id 1369B37B69F for ; Wed, 10 Jan 2001 10:14:12 -0800 (PST) Received: from g-em.pl (acid.local.g-em.pl [192.168.1.67]) by unix-server.local.g-em.pl (8.9.3/8.9.3) with ESMTP id TAA15803 for ; Wed, 10 Jan 2001 19:14:09 +0100 (CET) (envelope-from acid@g-em.pl) Message-ID: <3A5CA653.802B0B66@g-em.pl> Date: Wed, 10 Jan 2001 19:13:39 +0100 From: Jakub Kruszona-Zawadzki X-Mailer: Mozilla 4.73 [en] (X11; I; FreeBSD 4.1-RELEASE i386) X-Accept-Language: pl, en MIME-Version: 1.0 To: freebsd-bugs@FreeBSD.ORG Subject: semop locks all threads in multi-thread application Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sender: owner-freebsd-bugs@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org When in multi-thread application I call function semop and it locks, it locks all threads (not only the current thread). It's my test program: #include #include #include #include void* testowyfred(void* par) { int i=0; while (1) printf("%d\n",i++); } int main(void) { pthread_t watek; long i=7; struct sembuf buf; int t; pthread_create(&watek,NULL,testowyfred,(void*)&i); sleep(1); //it's for test that thread is working buf.sem_num = 0; buf.sem_op = -1; buf.sem_flg = 0; t = semget(0xBACA,1,IPC_CREAT | 0777); semop(t,&buf,1); return 1; } To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message