THRIFT-3855 Replaced complex CompareAndSwapInt64 with syncOnce.
Client: Go
Paul <pavel.finkelshtein@gmail.com>

This closes #1094
diff --git a/lib/go/thrift/simple_server.go b/lib/go/thrift/simple_server.go
index 8c56a4f..4097c4a 100644
--- a/lib/go/thrift/simple_server.go
+++ b/lib/go/thrift/simple_server.go
@@ -22,13 +22,12 @@
 import (
 	"log"
 	"runtime/debug"
-	"sync/atomic"
+	"sync"
 )
 
 // Simple, non-concurrent server for testing.
 type TSimpleServer struct {
 	quit chan struct{}
-	stopped int64
 
 	processorFactory       TProcessorFactory
 	serverTransport        TServerTransport
@@ -150,11 +149,14 @@
 	return nil
 }
 
+var once sync.Once
+
 func (p *TSimpleServer) Stop() error {
-	if atomic.CompareAndSwapInt64(&p.stopped, 0, 1) {
+	q := func() {
 		p.quit <- struct{}{}
 		p.serverTransport.Interrupt()
 	}
+	once.Do(q)
 	return nil
 }
 
@@ -186,7 +188,7 @@
 		if err, ok := err.(TApplicationException); ok && err.TypeId() == UNKNOWN_METHOD {
 			continue
 		}
-		if !ok {
+ 		if !ok {
 			break
 		}
 	}