Advertisement
yerden

odd-even cpu burner

Feb 24th, 2023
831
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 0.64 KB | None | 0 0
  1. package main
  2.  
  3. /*
  4. static int x = 1;
  5.  
  6. static void
  7. do_work() {
  8.     while (1) {
  9.         x = 2 * x;
  10.     }
  11. }
  12. */
  13. import "C"
  14.  
  15. import (
  16.     "log"
  17.     "os"
  18.     "sync"
  19.  
  20.     "github.com/yerden/go-dpdk/eal"
  21. )
  22.  
  23. var crc uint32 = 1
  24.  
  25. func main() {
  26.     if _, err := eal.Init(os.Args); err != nil {
  27.         log.Fatalln("EAL init failed:", err)
  28.     }
  29.     defer eal.Cleanup()
  30.     defer eal.StopLcores()
  31.  
  32.     var wg sync.WaitGroup
  33.     for _, id := range eal.LcoresWorker() {
  34.         wg.Add(1)
  35.         go eal.ExecOnLcore(id, func(*eal.LcoreCtx) {
  36.             defer wg.Done()
  37.             id := eal.LcoreID()
  38.  
  39.             if id%2 == 0 {
  40.                 C.do_work()
  41.             }
  42.  
  43.             for {
  44.                 crc = 2 * crc
  45.             }
  46.         })
  47.     }
  48.  
  49.     wg.Wait()
  50. }
  51.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement