Have you concidered using a shader? I'm sure I've seen the game of life operating on a texture in a GLSL shader before now.

Also if you've got a multi-core CPU, break up the arena into seperate threads, they only have to lock when checking those border cells that are allocated to another thread.

for more learned information check here : http://dotat.at/prog/life/life.html