C++到底要怎么写

2017-12-14 16:27:15 +08:00
 racecoder

各种莫名其妙的访问冲突,加上 Sleep();后就好了,时间也不一定相等,有的 50 就够了,有的要 200。虽然一两个没什么感觉,但是多了感觉程序好慢。

想起了 C++从入门到放弃,我现在好难受。。。

4307 次点击
所在节点    C
44 条回复
racecoder
2017-12-14 17:29:51 +08:00
@besto 抱歉,公司的项目,api 也是第三方的 sdk,所以我不能贴出来。感谢你那么想帮我,我只能想说说写 C++的感受。。。羡慕会 C++的大佬们。
skadi
2017-12-14 17:38:34 +08:00
加个 sleep...
我猜是多线程的问题吧.
gamexg
2017-12-14 18:33:50 +08:00
@liuminghao233 想起了单片机模拟多线程...
Kilerd
2017-12-14 18:49:11 +08:00
rust 欢迎你
framlog
2017-12-14 19:00:58 +08:00
rust 欢迎你+1
codecooker
2017-12-14 19:05:52 +08:00
多线程抢占资源,你这样解决不了实际问题的。加个互斥锁吧,或者选一个线程安全的资源类型
wwqgtxx
2017-12-14 19:19:39 +08:00
@gamexg 那不都是一个大循环然后一大坨 switch 分支,尽量拆解每个工作让他看起来同步嘛,其实原理很类似于 Python 中用 yield 实现协程
MeteorCat
2017-12-14 19:22:41 +08:00
推荐 Golang 入门,进阶 C/C'+
racecoder
2017-12-14 19:25:49 +08:00
我就不一一 at 了。谢谢你们那么贴心的推荐,但是我已经学了 Java 了……,因为项目需要才临时学的 C++。暂时还没打算学那么多语言,毕竟 Java 还没搞明白。
MeteorCat
2017-12-14 20:00:54 +08:00
推荐 Golang 入门,进阶 C/C+
acros
2017-12-14 20:23:47 +08:00
从 java 到 c++?
估计在 c++里面对 new 和 delete 时机没弄清,说的访问冲突是内存泄漏问题吧。c
lrxiao
2017-12-14 23:47:41 +08:00
只能说这锅 C++不背...不过 Rust fearless concurrency 可以一试
lsmgeb89
2017-12-14 23:57:53 +08:00
好好学学多线程编程,sleep 的话太业余了。
z1s23
2017-12-15 00:16:22 +08:00
少用高级特性,把 C++当成 C 用,会少很多问题,以前做图像处理用的 halcon 的商业 SDK,集成的时候用 C++发现开发效率低,当时部门熟练使用 C++的就我一个,后来改用 C#,开发效率高很多,而且同事上手也快,最后变成了 C#+图像算法+图像库的模式
we2ex
2017-12-15 00:29:12 +08:00
😂C++就不是一门能临时学的语言啊
bramblex
2017-12-15 09:21:41 +08:00
不是一个加锁的队列就能解决你的问题
lanry
2017-12-15 09:30:12 +08:00
和 C++貌似没什么关系呀
fuzhuo233
2017-12-15 09:59:12 +08:00
我感觉学 C++最好是学 QT 带着学 C++,这样容易有产出还好玩,纯玩一些算法命令行啥的很难静下心来一直玩的
ioth
2017-12-15 10:08:43 +08:00
@lanry 他觉得有就有了,用汇编就没有关系了。
c 还不是一样。
GeruzoniAnsasu
2017-12-15 10:19:04 +08:00
“ opencv ” “提取特征”

估计也是算法方面的,库和 api 是 c++接口。讲真这样的不要强求自己往学会写 c++代码上靠,就当做 c 来写反而不会出什么问题,对于算法类的程序来说,用 1k 行流水账 baby code 实现要比用一大堆 c++特性又是容器又是 trait 又各种 move 智能指针写完不过瘾再 future 并发一轮好得多,写出来又没人看得懂,看得懂的人说不准当魔法越玩越黑最后只剩 magic code 虽然不知道怎么回事但好像就是能对最后谁都不敢动。

对于从其它语言,特别是 C 转过来的人,我一般只劝他们把函数写进类里然后 static 掉,全局变量你给我放类里 static 掉,其它正常的 oo 语言转过来的( java )什么,c with class 模式能写熟练已经谢天谢地了,你实在对性能没什么概念就尽量多传指针,对,多传指针,跟你熟知引用是差不多的,释放的问题裸 delete 就裸吧裸能解决问题总比多线程智能指针+容器莫名其妙的多次析构好得多,大不了多几把锁,反正线程运行的时候又不干预,释放的时候保护冗余一点没什么大不了的

RAII 我都不指望你知道字面意思了,别忘记把基类析构 virtual 就行

在 c++里线程其实还是相当原始,异步和多线程下并发要格外小心

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/414747

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX