News for hackers. Stuff that matters.
Re:In-memory key-value store in C, Go and Python by jbarham on Wednesday March 21, 2012 @01:18AM (#3733244)
You're correct that updating a map from multiple goroutines without synchronizing is unsafe. But the overhead of using a RWMutex (http://weekly.golang.org/pkg/sync/#RWMutex) in this case should be negligible compared to the I/O code.

The big win is that Go allows you to write straightforward concurrent code but under the hood uses high-performance system calls like epoll.

EDIT: Here's a thread-safe version: https://github.com/jbarham/Key-Value-Polyglot/blob/master/me.... Still plenty fast.

Re:In-memory key-value store in C, Go and Python by teejae on Wednesday March 21, 2012 @10:40AM (#3734580)
FYI, In the Go version, the lock can be added more simply, without the rw:

// Synchronize map access between multiple goroutines. type cache struct { m map[string]string sync.RWMutex }

Then, you can just use:

cache.Lock/Unlock/RLock/RUnlock directly. It's clearer. The beauty of Go's mixins.

Re:In-memory key-value store in C, Go and Python by ootachi on Wednesday March 21, 2012 @12:07PM (#3734986)
So much for CSP, if you're using threads and shared state.