Ма c ОС приложения Какао для нагрузки на процессор - PullRequest
0 голосов
/ 26 марта 2020

Я пытаюсь создать приложение с 2 кнопками: «Пуск» и «Стоп».

При нажатии кнопки «Пуск» должна быть запущена команда терминала:

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

Должна работать кнопка «Стоп»:

killall yes

Мне также интересно, можно ли запустить приложение на каждой ОС c.


Мой код

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 & "

1 Ответ

0 голосов
/ 27 марта 2020

Если ваша цель состоит в том, чтобы просто развернуть одно ядро ​​ЦП до 100%, сохраняя при этом ваш пользовательский интерфейс отзывчивым, вам было бы гораздо лучше использовать libdispatch для запуска бесконечного времени l oop в фоновом потоке, например следующий фрагмент:

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 для запуска сценария оболочки будет сложным для развертывания. Вам нужно убедиться, что вы распространяете сценарий, и вы столкнетесь с проблемами, связанными с песочницей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...