#!/bin/bash
#!/bin/bash

# Initialize the semaphore and shared variable
declare -i readers_count=0
declare -i resource=0

# Semaphore for readers
declare -i mutex_readers=1
declare -i mutex_writers=1

# Function for readers
reader() {
    echo "Reader $1 is reading"
    ((mutex_readers--))
    if ((mutex_readers == 0)); then
        ((mutex_writers--))
    fi
    ((readers_count++))
    ((mutex_readers++))

    echo "Reader $1 reads: $resource"
    ((readers_count--))

    if ((readers_count == 0)); then
        ((mutex_writers++))
    fi
}

# Function for writers
writer() {
    echo "Writer $1 is writing"
    ((mutex_writers--))
    ((mutex_readers--))

    ((resource++))
    echo "Writer $1 modifies resource to: $resource"

    ((mutex_writers++))
    ((mutex_readers++))
}

# Simulate readers and writers
for i in {1..5}; do
    reader "$i" &
    writer "$i" &
done

wait


Embed on website

To embed this program on your website, copy the following code and paste it into your website's HTML: