shm_w.go 963 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package main
  2. import(
  3. "fmt"
  4. "time"
  5. //"strings"
  6. "unsafe"
  7. "github.com/hidez8891/shm"
  8. )
  9. const SHM_NAME = "my_shm"
  10. const SHM_SIZE = 4 * 1000 * 1000
  11. type MyData struct {
  12. ss string
  13. ii int
  14. }
  15. func main() {
  16. w, err := shm.Create(SHM_NAME, SHM_SIZE)
  17. if err != nil {
  18. fmt.Printf("fail: create shared memroy %v", err)
  19. }
  20. const sz = int( unsafe.Sizeof( MyData{} ) )
  21. data := MyData{ss:"hello world", ii:100}
  22. var asByteSlice []byte = (*(*[sz]byte)(unsafe.Pointer(&data)))[:]
  23. n, err := w.WriteAt(asByteSlice, 0)
  24. if err != nil {
  25. fmt.Printf("fail: write shared memroy %v", err)
  26. }
  27. fmt.Printf("wn==>%d", n)
  28. /*r, err := shm.Open("aaa", 64)
  29. if err != nil {
  30. fmt.Printf("fail: open shared memroy %v", err)
  31. }
  32. buf := make([]byte, len(data))
  33. n, err = r.ReadAt(buf, 0)
  34. if err != nil {
  35. fmt.Printf("fail: read shared memroy %v", err)
  36. }
  37. fmt.Println("rn==>%d", n)
  38. r.Close()
  39. */
  40. time.Sleep(time.Duration(30)*time.Second)
  41. //w.Close()
  42. }