Blocking and non-blocking operations