---
name: "ck_pflock"
section: "3"
platform: "linux"
package: "libck-dev"
version: "0.7.2-6"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/ck_pflock"
---

# ck\_pflock(3)

centralized phase-fair reader-writer locks

## NAME

**ck\_pflock\_init**, **ck\_pflock\_write\_lock**, **ck\_pflock\_write\_unlock**, **ck\_pflock\_read\_lock**, **ck\_pflock\_read\_unlock**, – centralized phase-fair reader-writer locks

## LIBRARY

Concurrency Kit (libck, -lck)

## SYNOPSIS

**#include \<ck\_pflock.h\>**

ck\_pflock\_t lock = CK\_PFLOCK\_INITIALIZER;

*void*\

**ck\_pflock\_init**(*ck\_pflock\_t \*lock*);

*void*\

**ck\_pflock\_write\_lock**(*ck\_pflock\_t \*lock*);

*void*\

**ck\_pflock\_write\_unlock**(*ck\_pflock\_t \*lock*);

*void*\

**ck\_pflock\_read\_lock**(*ck\_pflock\_t \*lock*);

*void*\

**ck\_pflock\_read\_unlock**(*ck\_pflock\_t \*lock*);

## DESCRIPTION

This is a centralized phase-fair reader-writer lock. It requires little space overhead and has a low latency fast path.

## EXAMPLE

```
#include <ck_pflock.h>
static ck_pflock_t lock = CK_TFLOCK_INITIALIZER;
static void
reader(void)
{
	for (;;) {
		ck_pflock_read_lock(&lock);
		/* Read-side critical section. */
		ck_pflock_read_unlock(&lock);
	}
	return;
}
static void
writer(void)
{
	for (;;) {
		ck_pflock_write_lock(&lock);
		/* Write-side critical section. */
		ck_pflock_write_unlock(&lock);
	}
	return;
}
```

## SEE ALSO

[ck\_brlock(3)](/ck_brlock/3.md), [ck\_rwlock(3)](/ck_rwlock/3.md), [ck\_tflock(3)](/ck_tflock/3.md), [ck\_swlock(3)](/ck_swlock/3.md)

Additional information available at http://concurrencykit.org/
