Lecture Notes for Concurrent Programming

7 August 2002 - Readers-Writers KWIC Access


Readers-Writers KWIC Access


The Readers-Writers Problem


The Generic Database


Generic Database Clients


The Trivial Database Client


Problems With The Trivial Solution


Condition Variables


Condition Variable Problems


Handoff Condition Variables


Using Handoff Condition Variables


Condition Variable Clients


init() and term()


Implementing init() and term()


Improving on Handoff Condition Variables


The Readers-Writers Queue


Queue Timeliness


The Readers-Writers Queue


Reader Queue Protocols


Reader Exit Protocol


Writer Protocols


Baton Passing


Further Improvements


The Database Queue


Database Queue Properties


The Database Queue Implementation


The KWIC Database

class KWICDB 

  private KWICDatabase KWICDB = new KWICDatabase()
  private boolean entryOk = false

  public KWICDBInterface init() 
    entryOk = true

  public String [] query(String keywords[])
    if entryOk return KWICDB.get(keywords)
    else throw new Error()

  public void term()
    entryOk = false

  public void write(String description)
    if entryOk KWICDB.put(description)
    else throw new Error()


Discussion


Points to Remember


This page last modified on 13 August 2002.