楼主: knight1001
跳转到指定楼层
上一主题 下一主题
收起左侧

阿里跪经 心服口服 从来没这么服过。。。

 
🔗
magicsets 2018-3-21 02:06:31 | 只看该作者
全局:
knight1001 发表于 2018-3-21 00:22
要保证有序 线程一1 3 5…… 线程二2 4 6……

我写了一个C++版的:
  1. #include <iostream>
  2. #include <memory>
  3. #include <mutex>.google  и
  4. #include <thread>. Χ
  5. #include <vector>

  6. int main(int argc, char *argv[]) {. 1point 3acres
  7.   constexpr int kNumWorkers = 2;
  8.   constexpr int kRange = 100;.
  9. ..
  10.   std::mutex mutex;
  11.   std::condition_variable cv;
  12.   int count = 0;.1point3acres

  13.   auto worker = [&](const int i) {.1point3acres
  14.     return [&, i] {
  15.       while (count < kRange) {.google  и
  16.         std::unique_lock<std::mutex> lock(mutex);
  17.         cv.wait(lock, [&] { return count % kNumWorkers == i || count >= kRange; });
  18.         if (count % kNumWorkers == i && count < kRange) {. 1point 3acres
  19.           std::cout << "Thread [" << i << "] " << ++count << "\n";. 1point 3 acres
  20.         }-baidu 1point3acres
  21.         lock.unlock();
    . ----
  22.         cv.notify_all();
  23.       }
  24.     }; ..
  25.   };
  26. ..
  27.   std::vector<std::unique_ptr<std::thread>> workers;
  28.   for (int i = 0; i < kNumWorkers; ++i) {
  29.     workers.emplace_back(std::make_unique<std::thread>(worker(i)));
  30.   }

  31.   for (int i = 0; i < kNumWorkers; ++i) {.google  и
  32.     workers[i]->join();
  33.   }
  34.   return 0;
  35. }
复制代码
不过实际工程中线程交互一般都会使用各种抽象(所谓轮子),例如Thread-safe queue,Thread-pool scheduler, Continuation-passing scheduler。结合使用高级语言中的Lambda(匿名函数)/匿名类机制,其实多线程写起来并不麻烦。
回复

使用道具 举报

🔗
wcyz666 2018-3-21 02:57:59 | 只看该作者
全局:
alc9700 发表于 2018-3-16 11:53
多线程同步 操作系统课的生产者-消费者问题。这要都不会,本科cs就真白念了。

要求次序就不能是这个模型了
回复

使用道具 举报

无效楼层,该帖已经被删除
🔗
donnice 2018-5-1 03:34:02 | 只看该作者
全局:
日志易-HR 发表于 2018-4-26 14:40
欢迎楼主关注日志易的北京/深圳的大数据开发、机器学习、搜索等职位(详细见广告位或我们官网),我们团队 ...

您好,请问现在还有实习岗位吗?谢谢!
回复

使用道具 举报

🔗
helloterran 2018-5-2 08:21:55 | 只看该作者
全局:
xiaohao12 发表于 2018-3-17 02:25
我觉得多线程是为了提高性能的。国内的面试并不向北美这样只靠刷题算法,国内面试考的非常全面,多线程, ...

多线程也只是 软件工程的一小块啊。
. 1point3acres
我算上研究生前后干了快10年底层马公,c++和gpu编程,但是我的多线程水平仅限于你给我写一个代码我能讲讲是啥意思,让我直接上手我一行伪代码都写不出来。每次碰到面试官问multithreading,我都直接说不会。
回复

使用道具 举报

无效楼层,该帖已经被删除
全局:
多线程打印1-100挺好的啊,本身System.out.print在多线程里就是个大坑
回复

使用道具 举报

🔗
tiancaihxx 2018-9-7 02:20:57 | 只看该作者
全局:
之前面dropbox直接让写一个write  read lock。。。。
回复

使用道具 举报

无效楼层,该帖已经被删除
🔗
seadoggy 2018-9-20 04:55:36 | 只看该作者
全局:
阿里悬学, 面了4轮,写了三轮代码,全部写过,被manager挂了,给的反馈很敷衍,估计不想要人
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表