-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/35395/
-----------------------------------------------------------

(Updated June 12, 2015, 6:24 p.m.)


Review request for mesos, Benjamin Hindman and Joris Van Remoortere.


Changes
-------

Add documentation and address formatting issues.


Repository: mesos


Description
-------

(1) Simplify introducing new synchronization primitives.

Before:

```cpp
template <>
class Synchronized<bufferevent>
{
public:
  Synchronized(bufferevent* _bev) : bev(CHECK_NOTNULL(_bev))
  {
    bufferevent_lock(bev);
  }
  
  Synchronized(bufferevent** _bev) : Synchronized(*CHECK_NOTNULL(_bev)) {}
  
  ~Synchronized()
  {
    bufferevent_unlock(bev);
  }
  
  operator bool() const { return true; }

private:
  bufferevent* bev;
};
```

After:

```cpp
Synchronized<bufferevent> synchronize(bufferevent* bev) {
  return {
    bev,
    [](bufferevent* bev) { bufferevent_lock(bev); }
    [](bufferevent* bev) { bufferevent_unlock(bev); }
  };
}
```

(2) Enable `return` within `synchronized` and avoid the `control reaches end of 
non-void function` warning.

```cpp
int foo()
{
  int x = 42;
  std::mutex m;
  synchronized (m) {
    return x;
  }
}
```


Diffs (updated)
-----

  3rdparty/libprocess/3rdparty/stout/include/stout/synchronized.hpp 
60eaf263f220b4990aefe4e5d6d2aa1296891e57 

Diff: https://reviews.apache.org/r/35395/diff/


Testing
-------

`make check`


Thanks,

Michael Park

Reply via email to