I would maybe first recommend to understand the problem itself and then finding the right solution.
It really depends on what you application is, some try to cross clock domains with minimum latency, others don't care about area overhead and might use overly complicated designs yet others don't seem to even care!! they claim the frequencies they handle are so low that the MTBF becomes very rare...
If you would like to explore a bit, try reading these posts and papers:
It is a lot of material, I know - but believe me, this is such an important problem that the reading time is time well spent. In each and every design I was part of, somewhere , someplace there was a some sort of synchronization problem involved. You will save a lot of time and raise your design standard by a few levels after grasping those concepts.