学习多线程以及 GUI 编程的正确姿势是?

2016-02-03 23:14:53 +08:00
 braineo
Sorry 。昨天发了个贴在工作版没有求到答案。于是到这里再发一次。请各位多多指教。

是这样的:
LZ 在某个大公司供职二年文职工作之后,决意跳到互联网行业……
一年来痛定思痛学习编程刷刷 leetcode ,没想到还真的跳成功了……

自觉水平仍然太菜可能无法胜任,真对不起程序员这个名头。
于是想趁过年期间入职之前再全脱产提高一下自己

想请教一下 多线程(进程), Async ,还有 GUI 编程应该看点什么书提升自己?

自己搜索了一下 直接看<操作系统>的建议很多
我知道这个很重要,但是自己看了一下觉得看不懂概念的也很多而且比较偏理论?
如果能有什么实践导向的我觉得可以学起来没有那么枯燥。
因为个人学习经验上来看,先上理论的会出现看不下去的情况。但是实践过一次再看理论就会有种恍然大悟的感觉

综上,请把各种书或者网站的推荐砸向我 :)谢谢
5412 次点击
所在节点    程序员
60 条回复
allenforrest
2016-02-03 23:25:35 +08:00
你先说说你即将入职的工作是做哪方面的?桌面应用? iOS App ? Android App ?
Mirana
2016-02-03 23:27:02 +08:00
确实光看理论会看不下去的,所以你入职要做的东西是什么?
em70
2016-02-03 23:27:50 +08:00
既然要实践,为什么还要让人给你推荐书

GUI 编程建议安装一个 Delphi ,不写一行代码就可以快速做出能运行的 win, mac, Android 界面,然后再慢慢学习给界面添加各种功能,很适合你的需求
braineo
2016-02-03 23:29:33 +08:00
@allenforrest 我觉得应该是桌面, Android 跟 iOS 我也不怎么会……
braineo
2016-02-03 23:31:42 +08:00
@Mirana 做桌面程序吧。其实没有明确地说,更像是 General hire?公司挺小的可能不会专职干一件事
allenforrest
2016-02-03 23:32:25 +08:00
@braineo Windows 下桌面开发还是跨平台,前者就找微软的书看把,后者可能是用 Qt ,可以看 C++ GUI programming with Qt
braineo
2016-02-03 23:33:56 +08:00
@em70 可能我表达得不太好。直接上确实是可以啊,但是不会踩上很多坑吗?如果看前人总结出来的经验去实践的话就可以少踩很多坑啦
braineo
2016-02-03 23:35:14 +08:00
@allenforrest 前者.Net 后者 C++ GUI programming with Qt ?好哒!谢谢
hardware
2016-02-03 23:39:20 +08:00
不用学那些乱七八糟的
Html5+css+javascript 学会了就能去找工作了
braineo
2016-02-03 23:42:30 +08:00
@hardware 但是我准备去工作了啊
zhpech
2016-02-03 23:45:21 +08:00
线程本来就是理论的东西吧,我当时直接上来写的时候一知半解,直到操作系统里的各种模型理论概念有了之后才理解了很多东西。《操作系统》确实很有用。

GUI 编程?看楼主用什么语言吧。
hardware
2016-02-03 23:48:11 +08:00
@braineo 但还是推荐从这个开始入手,到时候找个东西把网页一包,就能成桌面软件、 IOS 、安卓软件了。
braineo
2016-02-03 23:52:44 +08:00
@zhpech 所以还是建议上 操作系统 吗?呃,其实 GUI 的话与其说是想要具体编程的教材 更加偏向于怎么设计 GUI 的架构 以及 线程?的总论一样的书。因为具体工具的书搜索的话其实出来的比较多,比较好找
braineo
2016-02-03 23:55:02 +08:00
@hardware 卧槽 这么厉害的。我不太懂这个,这样的网页的线程其实就是全在后端了前段的话只是起到了显示的作用吗?
zhpech
2016-02-03 23:55:40 +08:00
@braineo 不是写客户端的 不清楚 GUI 方面的理论 指的是计算机图形学么?操作系统的话 多线程(多进程)本来也只是里面很小的一块,如果楼主不是对整个都感兴趣的话,也可以只看那些,一边理论一边就着实现生产者消费者和读者写者模型,基本上就妥妥的了(我们老师说实际生产中用到的最多的也就生产者消费者了……)
snnn
2016-02-03 23:59:35 +08:00
我能想到的书都是很老的书……
braineo
2016-02-04 00:04:22 +08:00
@zhpech 我搜出来的一些概念级信息是一个 GUI 如果只有一个线程?那么在处理长时间任务的时候 UI 就会卡住 要再开一个线程处理后面的东西还要保持前端的响应。但是如果内部的模块很多就要开很多线程去分别处理,就可能会产生很多问题(但是没说是什么问题...)
就是说操作系统的多线程部分 跟 设计模式 可能比较接近我提问的意图?然后搞个什么上手实践
braineo
2016-02-04 00:06:18 +08:00
@snnn 老当益壮?本来应该也是早就解决掉的问题嘛……只是我比较弱逼...
zhpech
2016-02-04 00:15:35 +08:00
@braineo 嗷这个和 GUI 没关系~主要还是进程、线程以及一些其他理论的东西,如果资源不进行共享的话,多线程没啥难度,资源共享见我上面说的,一本非常有名的书叫做现代操作系统(并且不断更新再办)

我们这么想好啦,线程(或者进程,取决于最小单位)是个很单纯的小朋友,你叫他去画画,他就不能同时在那边打草稿计算,你让他先画直线,就不能再让他同时先去画圆,他必须画完了画,才能去打草稿,这样你就会很长一段时间觉得好无聊啊,怎么那么慢。

这就是你说的那个栗子,然后你再多叫一个小朋友去计算呢,是不是能快一点,如果同时很多小朋友在计算,那会不会更快?但这就涉及了共享问题了(๑•̀㉨•́ฅ✧
braineo
2016-02-04 00:24:58 +08:00
@zhpech 所以我是没提问在点子上啊!终归还是多线程的问题然后绕回到了操作系统...

共享问题是
小朋友多了的话先算好的要等没算好的?
还是最后还有一个小朋友要把计算结果合并起来?
还是小朋友 A 不小心把小朋友 B 的计算结果盖过去了?

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

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

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

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

© 2021 V2EX