Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 11 Oct 2002 07:16:53 -0600
From:      "Andrei Cojocaru" <spinlock_lists@empirequest.com>
To:        "Peter Pentchev" <roam@ringlet.net>
Cc:        <freebsd-hackers@FreeBSD.ORG>
Subject:   Re: Question about light-weight mutex (kind of)
Message-ID:  <004e01c27128$77828c30$0300a8c0@fivehundred>
References:  <000d01c270c8$937a2160$0200a8c0@twothousand> <20021011110508.GR376@straylight.oblivion.bg> <20021011110640.GS376@straylight.oblivion.bg>

next in thread | previous in thread | raw e-mail | index | archive | help
Ah, no.

I am writing my own R/W lock because I need the ability to offload them =
to disk. I think condition variables should be fast enough for what I'm =
looking for.

Any ideas?

----- Original Message -----=20
From: "Peter Pentchev" <roam@ringlet.net>
To: "Andrei Cojocaru" <spinlock_lists@empirequest.com>
Cc: <freebsd-hackers@FreeBSD.ORG>
Sent: Friday, October 11, 2002 05:06
Subject: Re: Question about light-weight mutex (kind of)

On Fri, Oct 11, 2002 at 02:05:08PM +0300, Peter Pentchev wrote:
> On Thu, Oct 10, 2002 at 07:50:28PM -0600, Andrei Cojocaru wrote:
> > Hello,
> >=20
> > I have a question, please include me in the reply specifically =
because I'm
> > not subscribed to the mailing list. Thanks
> >=20
> > I want a thread to spin atomically on a value until it's equal to =
1(i.e.
> > it's waiting for an event), how do I do that? I have no idea.. I =
want this
> > to be fast, not have to use a mutex each time to protect the value
> > I have an idea of how to do it using atomic assembly statements but =
I don't
> > want to use assmebly, I want to know if FreeBSD has built-in stuff =
for this.
> >=20
> > Please help thanks.
> >=20
> > This is required because I'm building R/W locks for a transaction =
system I'm
> > working on, and I need a way for a thread waiting on a lock to be =
notified
> > when a lock is gotten (and without having the thread block [that's =
why I
> > want it to spin]). Any hints would be appreciated thanks, once =
again.
>=20
> Would pthread_rwlock_tryrdlock(3) and pthread_rwlock_tryrdlock(3),
> combined with an usleep() or something, do the trick?

Of course, the second one was meant to be pthread_rwlock_trywrlock(3)...

G'luck,
Peter

--=20
Peter Pentchev roam@ringlet.net roam@FreeBSD.org
PGP key: http://people.FreeBSD.org/~roam/roam.key.asc
Key fingerprint FDBA FD79 C26F 3C51 C95E  DF9E ED18 B68D 1619 4553
Hey, out there - is it *you* reading me, or is it someone else?


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?004e01c27128$77828c30$0300a8c0>