nsfwapp/backend/training_priority_windows.go
2026-06-25 14:54:58 +02:00

55 lines
1.0 KiB
Go

//go:build windows
package main
import (
"os/exec"
"strconv"
"syscall"
)
const windowsBelowNormalPriorityClass = 0x00004000
const windowsCreateNewProcessGroup = 0x00000200
func applyTrainingLowPriorityBeforeStart(cmd *exec.Cmd, enabled bool) {
if cmd == nil {
return
}
if cmd.SysProcAttr == nil {
cmd.SysProcAttr = &syscall.SysProcAttr{}
}
if enabled {
cmd.SysProcAttr.CreationFlags |= windowsBelowNormalPriorityClass
}
}
func applyTrainingLowPriorityAfterStart(cmd *exec.Cmd, enabled bool) {
_ = cmd
_ = enabled
}
func prepareTrainingCommandForCancel(cmd *exec.Cmd) {
if cmd == nil {
return
}
if cmd.SysProcAttr == nil {
cmd.SysProcAttr = &syscall.SysProcAttr{}
}
cmd.SysProcAttr.CreationFlags |= windowsCreateNewProcessGroup
}
func terminateTrainingCommand(cmd *exec.Cmd) {
if cmd == nil || cmd.Process == nil || cmd.Process.Pid <= 0 {
return
}
killCmd := exec.Command("taskkill", "/PID", strconv.Itoa(cmd.Process.Pid), "/T", "/F")
hideCommandWindow(killCmd)
_ = killCmd.Run()
_ = cmd.Process.Kill()
}