※ 引述《BreathWay (息尉)》之銘言:
: 開發平台(Platform): (Ex: Win10, Linux, ...)
: Linux
: 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
: GCC
: 問題(Question):
: 我寫了一個以暴力演算法求最佳解的程式,
: 主要是透過不斷更新所找到的更好的解來達成。
: 但是我希望能設定一個時間上限,
: 如果程式還沒跑完就直接輸出目前找到的最好的解。
: 請問有辦法在 C 裡面實作這個功能嗎?
如果想跟MVC 87%像 前置準備:
1. threadM 計算單元
2. threadV 用來show結果
3. threadC 用來接收input
4. 1~2個signal
5. 一個buffer (稱作render buffer)
對threadV而言 render buffer是read only
對threadM而言 render buffer做atomic寫入
online流程:
每次ThreadC拿到input就signal給ThreadM
(optional : 同時signal給ThreadV 然後thread V開始計時)
ThreadM計算單元先初始化render buffer
ThreadM開始做progressive計算
ThreadM如果有current best就atomic更新render buffer
ThreadV 想要多久去讀一次buffer都可以(原PO的是一段固定的時間)
-----------------------------------------------------------------------
如果想要跟flux架構87% 就多準備幾個buffer
thread C只讀 i/o buffer 只寫 input buffer
thread M只讀 input buffer 只寫render buffer
thread V只讀 render buffer
-----------------------------------------------------------------------
如果只開兩條thread 那就VC合併成一條
threadVC signal threadM之後就等時間到去拿render buffer資料show
-----------------------------------------------------------------------
如果只開一條thread 那就一直檢查時間是否到了
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.210.209
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1515031530.A.6B7.html
※ 編輯: Sidney0503 (140.113.210.209), 01/04/2018 15:54:28