C_and_CPP 板


LINE

开发平台(Platform): (Ex: Win10, Linux, ...) Windows 编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出) VC 2015 各位版友大家好,小弟我最近有个问题想要请教。 事情是这样的。 小弟我目前在工作上遇到一个情况 用一个人家厂商提供的API int dosomething(参数不重要); 使用这个API时,如果是成功的话,他会直接卡在这个function直到连线中断或是下中断。 这样会让我在程式中,无法继续做其他的事情。 失败的话,会立刻回传一个int 的error code讯息来告诉你。 这很明显的就是要用一个thread去做处理。 於是小弟我就使用了一个std::thread接这个function 然後再做detach 但是我发现假设失败的话无法拿到正确的error code你必须将error code写在参数中 可是介面是写死的无法动 所以小弟我现在的解法是这样 用一个future auto f = async(std::launch::async, dosomething, 参数...); 然後 atuo status = f.wait_for(100ms); //代表他马上抛出错误讯息 if(status != std::future_status::timeout) { return f.get(); } 以上使用async的解法是否恰当?? 是否有其他更好的做法?? 谢谢 -- 法老就预备他的车辆,带领军兵同去。埃及人追赶他们,法老一切的战车就在他们安营 的地方追上了。他们对摩西说:你把我们带来死在旷野吗?你为甚麽这样待我们,将我 们从埃及领出来呢?摩西向天空伸出无线电天线呼叫空中打击,耶和华便用以色列空军 F-16携带近接空中支援弹药出击。呼啸而过的战机在一小时内瘫痪了法老的战车,连一 个也没有賸下。以色列人看见埃及人的死屍都在海边了。就敬畏耶和华、又信服他和他 的仆人摩西 。 《旧约圣经‧出埃及记‧14章》 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 118.166.219.147
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1486390827.A.ADF.html
1F:推 phishingphi: 刚好看到 Item 36 的人路过... 02/07 00:21
2F:→ Caesar08: 有甚麽不满的吗? 02/07 00:22
3F:→ phishingphi: 不过写死100ms这样不就没什麽弹性,你确定 runtime 02/07 00:25
4F:→ phishingphi: 系统 loading 一变化或如何这段code还符合你的预期吗 02/07 00:28
5F:→ phishingphi: 我也是刚接触 Concurrency API 的新手,只是刚看有这 02/07 00:29
6F:→ phishingphi: 样的疑问而已... 02/07 00:29
7F:推 ilikekotomi: 如果失败的话有需要做什麽处理吗? 可以用callback 02/07 01:37
8F:→ ilikekotomi: 比方说DoSomethingWrapper(原本参数...,Callback) 02/07 01:40
9F:→ ilikekotomi: 实作为error = DoSomeThing(参数); callback(error); 02/07 01:41
我觉得Callback好像也行不通?? 因为Dosomething那边如果成功就会卡在那行了 这样Callback是否能够运作呢??
10F:→ ilikekotomi: 如果有事情是确定成功才能做的 这样我只想得到wait 02/07 01:50
11F:→ uranusjr: 写一个 wrapper 在有错误时抛 exception 这样可行吗 02/07 02:02
12F:→ uranusjr: 仔细想想好像也不用, 把 error code 存在某个地方就好 02/07 02:04
13F:→ Clangpp: to uranusjr大 effective modern c++ item 36好像有说 02/07 09:34
14F:→ Clangpp: thread 无法接到你抛的exception不过我不知道你的wrapper 02/07 09:35
15F:→ Clangpp: 要怎样设计就是了 02/07 09:35
16F:→ Caesar08: 用current_exception与rethrow_exception 02/07 09:52
17F:→ Caesar08: 就可以跨thread传exception 02/07 09:53
这个方案我担心会不会问题也出在成功时直接卡在DoSomething那边 所以基本上所有的问题应该都是出在厂商本身的API上... ※ 编辑: Clangpp (59.124.167.226), 02/07/2017 11:25:55
18F:→ ilikekotomi: 我原本想说callback是有错才要处理的 02/07 20:34
19F:→ ilikekotomi: 如果没回传错误没进callback似乎也没关系 02/07 20:34
20F:→ ilikekotomi: 但关键就在成功的话有没有需要执行什麽程式 02/07 20:35
21F:推 TeaEEE: 非同步func用parallel_invoke应该相对简单 02/08 14:43
22F:推 Schottky: 推签名档 02/08 21:26







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP