From a0123f163eddcea3e6b9f9d36f1f3fb3aa2c835a Mon Sep 17 00:00:00 2001
From: zhangmeng <775834166@qq.com>
Date: 星期一, 26 八月 2019 13:46:34 +0800
Subject: [PATCH] update

---
 readwriter.go |   27 +++++----------------------
 1 files changed, 5 insertions(+), 22 deletions(-)

diff --git a/readwriter.go b/readwriter.go
index 2da3119..523a605 100644
--- a/readwriter.go
+++ b/readwriter.go
@@ -6,12 +6,11 @@
 package shm
 
 import (
-	"golang.org/x/sys/unix"
 	"io"
 	"sync/atomic"
 	"unsafe"
 
-	"github.com/tmthrgd/go-sem"
+	"golang.org/x/sys/unix"
 )
 
 const (
@@ -55,22 +54,6 @@
 // Name returns the name of the shared memory.
 func (rw *ReadWriteCloser) Name() string {
 	return rw.name
-}
-
-// Unlink removes the shared memory.
-//
-// It is the equivalent to calling Unlink(string) with
-// the same name as Create* or Open*.
-//
-// Taken from shm_unlink(3):
-// 	The  operation  of shm_unlink() is analogous to unlink(2): it removes a
-// 	shared memory object name, and, once all processes  have  unmapped  the
-// 	object, de-allocates and destroys the contents of the associated memory
-// 	region.  After a successful shm_unlink(),  attempts  to  shm_open()  an
-// 	object  with  the same name will fail (unless O_CREAT was specified, in
-// 	which case a new, distinct object is created).
-func (rw *ReadWriteCloser) Unlink() error {
-	return Unlink(rw.name)
 }
 
 // Read
@@ -135,7 +118,7 @@
 		block = (*sharedBlock)(unsafe.Pointer(blocks + uintptr(uint64(blockIndex)*rw.fullBlockSize)))
 
 		if blockIndex == atomic.LoadUint32((*uint32)(&rw.readShared.WriteEnd)) {
-			if err := ((*sem.Semaphore)(&rw.readShared.SemSignal)).Wait(); err != nil {
+			if err := ((*Semaphore)(&rw.readShared.SemSignal)).Wait(); err != nil {
 				return Buffer{}, err
 			}
 
@@ -187,7 +170,7 @@
 		atomic.CompareAndSwapUint32((*uint32)(&rw.readShared.ReadEnd), blockIndex, uint32(block.Next))
 
 		if uint32(block.Prev) == atomic.LoadUint32((*uint32)(&rw.readShared.WriteStart)) {
-			if err := ((*sem.Semaphore)(&rw.readShared.SemAvail)).Post(); err != nil {
+			if err := ((*Semaphore)(&rw.readShared.SemAvail)).Post(); err != nil {
 				return err
 			}
 		}
@@ -258,7 +241,7 @@
 		block = (*sharedBlock)(unsafe.Pointer(blocks + uintptr(uint64(blockIndex)*rw.fullBlockSize)))
 
 		if uint32(block.Next) == atomic.LoadUint32((*uint32)(&rw.writeShared.ReadEnd)) {
-			if err := ((*sem.Semaphore)(&rw.writeShared.SemAvail)).Wait(); err != nil {
+			if err := ((*Semaphore)(&rw.writeShared.SemAvail)).Wait(); err != nil {
 				return Buffer{}, err
 			}
 
@@ -313,7 +296,7 @@
 		atomic.CompareAndSwapUint32((*uint32)(&rw.writeShared.WriteEnd), blockIndex, uint32(block.Next))
 
 		if blockIndex == atomic.LoadUint32((*uint32)(&rw.writeShared.ReadStart)) {
-			if err := ((*sem.Semaphore)(&rw.writeShared.SemSignal)).Post(); err != nil {
+			if err := ((*Semaphore)(&rw.writeShared.SemSignal)).Post(); err != nil {
 				return len(buf.Data), err
 			}
 		}

--
Gitblit v1.8.0