Boost logo

Boost :

From: Christopher Kohlhoff (chris_at_[hidden])
Date: 2006-08-11 09:45:01


Hi Beman,

Beman Dawes <bdawes_at_[hidden]> wrote:
> There is going to be an informal meeting of C++ committee
> members and threading experts in Redmond, Washington, US,
> August 23-25 for the sole purpose of making some progress on
> language changes needed to support threading. It would be
> helpful to me if Chris and other Boosters could get together a
> list before then of the minimal core language definitions,
> changes, and other specifications that library developers need
> to specify reliable libraries in a multi-threaded environment.
> What is needed isn't a laundry list of wishes and dreams, but
> a very minimalist list of hard-core needs.

Ok, to start things off, here is a high-level list of what I
think is required for asio. I don't think there's anything
particularly unusual in this list.

- I need some language to discuss thread safety. Examples:
  distinct objects of type X can be used concurrently from
  different threads; member functions of a value x of type X
  cannot be called concurrently; member functions of a value y
  of type Y may be called concurrently, except for the member
  function z().

- I need some language to talk about threads and their call
  stacks. Example: a handler object scheduled for execution
  using io_service.post() will only be invoked from a thread
  that is currently inside a call to io_service.run().

- I need to be able to specify that a library implementation
  must include memory barriers at various points in the
  execution sequence. This includes specifying the type of the
  memory barrier. As an example, prior to the io_service
  invoking a handler function there must be an acquire memory
  barrier, after calling the handler it will have a release
  memory barrier, and a call to io_service.post() will include a
  release memory barrier.

- There needs to be some support (whether explicit or implicit)
  for guaranteeing that a compiler does not reorder operations
  around the functions that include the memory barriers.

Cheers,
Chris


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk