Ist es möglich, eine Single-Thread-Anwendung im alten Stil für Linux in Go zu erstellen?Linux

Linux verstehen
Guest
 Ist es möglich, eine Single-Thread-Anwendung im alten Stil für Linux in Go zu erstellen?

Post by Guest »

Ich frage mich, dass es eine Möglichkeit gibt, eine mit einer mit Thread konsole in Go? < /p>
Kann eine solche Anwendung in C/Rust/Zig/& C erstellen), aber ich erforsche nur die Fähigkeiten der GO -Sprache und seiner modernen Compiler. () , aber es scheint sich nicht auf die Gesamtzahl der Threads auszuwirken, wobei die Werte niedriger als die aktuelle CPU -Anzahl (oder ich mache es einfach falsch).
Grundsätzlich Ich wollte mit der Erstellung einer Konsolenanwendung im alten Stil für Linux ohne Parallelität und Goroutinen spielen, nur eine unendliche für Schleife, die regelmäßig einige Dinge erledigt (vielleicht einige Dateien in der I/O-Blocking-Art und anzeigen und einige Informationen anzeigen von ihnen), wo ich gelegentlich den Garbage Collector manuell anrufe, wenn ich muss. >, debug.setMemorylimit und runtime.gc () . Aber wie kann ich Single-Threadness schaffen? Oder ist es intrinsisch unmöglich? >

Code: Select all

package main

import (
"runtime"
"runtime/debug"
"strings"
"time"
)

func init() {
// Locking OS thread
runtime.LockOSThread()
// GOMAXPROCS=1, Any effect?
runtime.GOMAXPROCS(1)
// Turn off garbage collection
debug.SetGCPercent(-1)
//debug.SetMemoryLimit(math.MaxInt64)
}

func main() {
var index uint64
for {
index++

// Emulate some memory allocation
strings.Repeat("x", 10*1024)

// Get memory statistics
var memStats runtime.MemStats
runtime.ReadMemStats(&memStats)

// Output some info
println(index, memStats.Alloc/1024.0, memStats.Sys/1024.0, memStats.NumGC)

if index%20 == 0 {
// Run GC periodically
runtime.GC()
}
time.Sleep(time.Duration(500) * time.Millisecond)
}
}
< /code>
Build für Linux: < /p>
GOARCH=amd64 GOOS=linux go build -ldflags "-s -w" -trimpath .
Obwohl ich keine Goroutinen verwende und GomaxProcs auf 1 festgelegt habe, habe ich mehrere Threads im Betriebssystem (Debian/Ubuntu in diesem Fall). Hier ist der HTOP Ausgabe:

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post