gpt4 book ai didi

swift - Mac OS Cocoa 应用程序对 CPU 造成压力

转载 作者:行者123 更新时间:2023-12-03 18:07:36 25 4
gpt4 key购买 nike

我正在尝试构建一个具有 2 个按钮(“开始”和“停止”)的 UI 应用程序。

单击“开始”按钮应运行终端命令:

yes > /dev/null & yes > /dev/null & yes > /dev/null &

停止按钮应该运行:

killall yes

我还想知道该应用程序是否可以在每个 Mac 操作系统上运行。

<小时/>

我的代码

import Cocoa

@NSApplicationMain

class AppDelegate: NSObject, NSApplicationDelegate {

@IBOutlet weak var window: NSWindow!

func applicationDidFinishLaunching(_ aNotification: Notification) {

}

func applicationWillTerminate(_ aNotification: Notification) {

}

@IBAction func StartStress(_ sender: NSButton) {

let path = "/varun-kaddichha$/Desktop/MacStressTest/stress.sh"
let arguments = ["/varun-kaddichha$/Desktop/MacStressTest/stress.sh"]
sender.isEnabled = false
let task = Process.launchedProcess(launchPath: path, arguments: arguments)
task.waitUntilExit()
sender.isEnabled = true
}

}

我的 bash 文件

#! /bin/bash

do shell script "yes > /dev/null & yes > /dev/null & yes > /dev/null & yes > /dev/null & yes > /dev/null & yes > /dev/null & "

最佳答案

如果您的目标只是将单个 CPU 核心旋转到 100%,同时保持 UI 响应能力,那么最好使用 libdispatch 在后台线程上运行无限 while 循环,如以下代码片段:

var stressWork: DispatchWorkItem?

@IBAction func startStress(_ sender: Any?) {
stressWork = DispatchWorkItem(block: {
while self.stressWork?.isCancelled == false {}
})
DispatchQueue.global().async(execute: stressWork!)
}

@IBAction func stopStress(_ sender: Any?) {
self.stressWork?.cancel()
}

使用 NSTask 运行 shell 脚本将很难部署。您必须确保分发脚本,并且您将面临与沙箱相关的挑战。

关于swift - Mac OS Cocoa 应用程序对 CPU 造成压力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60862125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com