l*********y 发帖数: 142 | 1 看了wiki上的介绍,还算理解。
请问是下面这样吗?谢谢
class Singleton {
Singleton* GetInstance() {
if (! instance) {
pthread_mutex_lock();
if (! instance) {
instance = new Singleton();
}
pthread_mutex_unlock();
}
}
~Singleton() {
pthread_mutex_unlock();
}
private:
Singleton(){};
static Singleton* instance;
};
Singleton* Singleton::instance = NULL;
但是如果Singleton destructor被正常调用,pthread mutex这时是没有lock的
可以unlock吗... 阅读全帖 |
|
|
y*******g 发帖数: 6599 | 3 多读多写,
找找面试题看看? 没面过花街,不知道他们喜欢什么,pthread吗 |
|
A*******e 发帖数: 2419 | 4 猎头投的简历。
先是144分钟48题的C++网上考试,然后HR电话,有19个简单技术问题,涉及C++,算法
,数据结构,网络协议,简单统计概念,都顺利过关。
然后工程师电面,依次问了简历,以前的项目,C++,算法,数据结构,网络协议,多
线程,bash。前面没问题,但后面3个都是考知识点,好几个不会,直接答“I don't
know”对方就没兴趣了。45分钟的面试30分钟提前结束,也没让提问。
C++和算法问的都很简单,反而关注bash,pthread api细节,确实不适合。 |
|
A*******e 发帖数: 2419 | 5 多线程我也做过不少。但我们是基于pthread之上定义了一层C++接口。
至于bash,有什么用?我平时也写一点简单的脚本,都是边搜边写,也没什么问题。如
果是全职写bash,我没兴趣。 |
|
A**u 发帖数: 2458 | 6 他们怎么考bash?
sed gawk 语法?
难道他们的多线程不是pthread的? |
|
A*******e 发帖数: 2419 | 7 给功能,写脚本,念给他听。
他要听pthread api的具体signature。这个我也是需要时现查。 |
|
r****t 发帖数: 10904 | 8 O'relly 有本 pthread,就是老了点。 |
|
f****4 发帖数: 1359 | 9 man pthread
c++ concurrency in action(还没出呢) |
|
f*******t 发帖数: 7549 | 10 这题大概是考你知道几种方法。
只要有win系统的thread handle,或者*nix系统的pthread id,就可以通过系统调用结
束指定线程。
message passing也是一种标准做法。
global variable虽然work,但应该不太好。 |
|
z**********3 发帖数: 11979 | 11 可以pthread——kill(pthread_t tid, int signal)
win没有signal机制 可以通过asynchronous procedure call
还可以扯扯直接杀和deferred杀的优劣 |
|
S**I 发帖数: 15689 | 12 ☆─────────────────────────────────────☆
yuhanlin (Yuhan) 于 (Mon Aug 29 00:18:17 2011, 美东) 提到:
周五面完最后一个onsite, 累的惨兮兮的, 好容易爬回家. 不管结果如何, 这段时间找
工作算是告一段落了.
下面把这段时间面试中被问到的题目整理一下, 供大家参考. 我也就不说具体是那些公
司了, 都是很典型的面试题, 到哪里都有可能会被问到.
* implement memcpy? How to improve? how to determine if a system is
32bit or 64bit?
* how is static keyword used in Java?
* a list of intervals, no overlapping and sorted, write a function to
insert an interval into the list and still keep the list sorted and no
overlapping.... 阅读全帖 |
|
b*****s 发帖数: 24 | 13 今天拿到offer了...感谢大家的祝福,在本版学了很多,感谢无私帮助别人的同学。祝
找工作的同学都能找到自己喜欢的工作,工作以后也别忘了提携自己的同胞。 :-)。
面的是嵌入式软件工程师的职位。面试过程,面了6个人,大概5个小时,基本都是面试
简历上的问题,c/c++编程题,没有特别难的。很多题在careercup和glassdoor上都有。
特别是电面时候的题目,事后才发现,都在上面。可是准备的时候,没有时间,好几题
只能临时搞定。
1. 求一个int中bit为1的个数(两个人问过);
三中经典的办法: 查表、bit mask、bit shift,并且讨论他们的速度
2. 编写一个函数 void LinkedListInsert(Node* head, int i, int value);
i<0时,插在head之前;
i>0时,如果大于链表长度,插在最后;如果小于,插在相应位置。
3. 一个数组,长度为n,知道最多只有一个peak, 有唯一的最大值,编写一个函数
寻找最大值。int FindPeak(double* array, int arraySize);
... 阅读全帖 |
|
h****e 发帖数: 928 | 14 可以用Java吗?至少在Java语言里就有很多concurrency handling
的native support,而且有的是相当high level的。C++的话要用到
pthread之类的吧。 |
|
|
i******e 发帖数: 273 | 16 WaitForMultipleObjects 函数难道不是Windows中多线程同步的API吗?虽然和Pthread
不同,但是也应该遵循Posix标准吧? |
|
g*****e 发帖数: 64 | 17 面试到底用什么语言通用的概率大?之前c++和java差不多(不)熟,复习以来一直都用
java做题。但是要面那几个大公司,发现大家好像都倾向c++,MS另说。现在正在痛苦
的转成c++,毕竟看那些container的具体methods还是要花好多时间的。还有经常有面
经问thread safe方面的,难道我要看pthread? 到底值不值得花时间研究c++?本身不
favor哪种语言,c++基本语法熟点,java methods更好用。 |
|
h****e 发帖数: 928 | 18 不要转,但是最好都准备。C++ STL用起来没有这么难吧。
至于pthread之类的,我觉得问到具体的lirary可能性不大,
但是OS课程中学到的mutex, conditional variables之类如何
实现还是要复习吧,你要是学通Java concurrency面试的时候
这方面的问题应该可以回答得出来。 |
|
|
|
|
B*******1 发帖数: 2454 | 22 你们干活都不用吗?
★ 发自iPhone App: ChineseWeb 7.7 |
|
|
B*******1 发帖数: 2454 | 24 那直接看人家的checkin就好了,或者去叫那哥们解释给你听。
★ 发自iPhone App: ChineseWeb 7.7 |
|
|
|
j*****y 发帖数: 1071 | 27 G 家 reschedule 了,下个礼拜去 他们那 fight |
|
|
|
o***d 发帖数: 313 | 30 恩,我用的这本,经典书,就是不知道你们用够不够深 |
|
j*****y 发帖数: 1071 | 31 要搞懂这些 api 吧
pthread_mutex_init
pthread_mutex_create
pthread_mutex_wait
pthread_mutex_lock
pthread_mutex_unlock
pthread_mutex_signal
pthread_mutex_condition
还有 semaphore的 |
|
|
g*********e 发帖数: 14401 | 33
搞懂是什么意思?大致会用?还是要懂内部实现? |
|
|
|
j*****y 发帖数: 1071 | 36 能用就不错了,我都不知道 condition, wait, signal 这些是干吗用的 :( |
|
p*****2 发帖数: 21240 | 37
第三版好像只能preorder, 看来只能看电子版的了。 |
|
|
l*****a 发帖数: 14598 | 39 10几年前就看过
不知道大牛当年怎么happy |
|
h**6 发帖数: 4160 | 40 现在std里面都加进thread mutex condition,再不学习就落伍了。 |
|
m**********0 发帖数: 356 | 41 你是说应用还是实现?
一般不是做kernel的不会问你实现的问题吧?
如果应用的话除了基本概念以外(但是基本概念编程都需要用啊?)还有什么可以问的
很深的吗?谢谢! |
|
k***t 发帖数: 276 | 42 要用两个conditional variable吗?谢了。 |
|
d**********x 发帖数: 4083 | 43 H2O那个我写了个C的。可以改吧改吧加上对各种原子的计数。
编译的时候别忘了 -lpthread !
#include
#include
#include
#include
#include
#include
sem_t availH;
sem_t availO;
sem_t usedH;
sem_t usedO;
void* H(void*) {
sem_post(&availH);
sem_wait(&usedH);
fprintf(stderr, "H consumed.\n");
pthread_detach(pthread_self());
return NULL;
}
void* O(void*) {
sem_post(&availO);
sem_wait(&usedO);
fprintf(stderr, "O consumed.\n");
pthread_detach(... 阅读全帖 |
|
d**********x 发帖数: 4083 | 44 H2O那个我写了个C的。可以改吧改吧加上对各种原子的计数。
编译的时候别忘了 -lpthread !
#include
#include
#include
#include
#include
#include
sem_t availH;
sem_t availO;
sem_t usedH;
sem_t usedO;
void* H(void*) {
sem_post(&availH);
sem_wait(&usedH);
fprintf(stderr, "H consumed.\n");
pthread_detach(pthread_self());
return NULL;
}
void* O(void*) {
sem_post(&availO);
sem_wait(&usedO);
fprintf(stderr, "O consumed.\n");
pthread_detach(... 阅读全帖 |
|
f*****e 发帖数: 2992 | 45 大二system programming中的pthreads学好了就差不多了。 |
|
K********y 发帖数: 47 | 46 (原贴见http://www.mitbbs.com/article/JobHunting/32331973_3.html)
3: 实现两个函数: H() and O(), 这两个函数会被多线程调用。当一个线程调用H或O时
,如果当前已经有至少两个线程call H和一个线程call O。那么让两个call H和一个
call O的线程返回(产生一个水分子),其他的都block。
多线程我不熟,pthread里没有现成的semaphore,所以习惯用condition variable。闭
门造车写了下面这样一个解法,显然不如版上各位给的代码简洁。但是这里有个bug我
想不明白,请教一下各位:
我的基本想法是,如果三个原子里最后一个就位的是H,则signal O,O再signal另一个
H;如果最后一个是O,则signal一个H,这个H再signal另一个H。为了区分H函数的两种
情况,我起初用了个bool signalNextH,但是会出现死锁。改成int来计数就过了(下
面的代码)。从这个症状来看,似乎是有两个O原子同时发出了signal,所以
signalNextH要用counter... 阅读全帖 |
|
d**********x 发帖数: 4083 | 47 谁说pthread里面没有现成的semaphore...
请自行google sem_t。。。 |
|
K********y 发帖数: 47 | 48 (原贴见http://www.mitbbs.com/article/JobHunting/32331973_3.html)
3: 实现两个函数: H() and O(), 这两个函数会被多线程调用。当一个线程调用H或O时
,如果当前已经有至少两个线程call H和一个线程call O。那么让两个call H和一个
call O的线程返回(产生一个水分子),其他的都block。
多线程我不熟,pthread里没有现成的semaphore,所以习惯用condition variable。闭
门造车写了下面这样一个解法,显然不如版上各位给的代码简洁。但是这里有个bug我
想不明白,请教一下各位:
我的基本想法是,如果三个原子里最后一个就位的是H,则signal O,O再signal另一个
H;如果最后一个是O,则signal一个H,这个H再signal另一个H。为了区分H函数的两种
情况,我起初用了个bool signalNextH,但是会出现死锁。改成int来计数就过了(下
面的代码)。从这个症状来看,似乎是有两个O原子同时发出了signal,所以
signalNextH要用counter... 阅读全帖 |
|
d**********x 发帖数: 4083 | 49 谁说pthread里面没有现成的semaphore...
请自行google sem_t。。。 |
|
b*****u 发帖数: 648 | 50 电面反复被这种多线程的题虐,一怒之下今天看了一天pthread
在网上找到一个读写锁的代码,有一个问题不太清楚,代码如下
http://www.broncho.cn/forum/viewtopic.php?t=1489
基本思想:
两个计数器 r_cnt, w_cnt
一个 mutex_cnt
一个 condition
读锁:
{
锁mutex
r_cnt++;
while(w_cnt>0)等待condition
解锁mutex
}
解除读锁
{
锁mutex
r_cnt--;
if(r_cnt==0) signal condition
解锁mutex
}
写锁
{
锁mutex
w_cnt++;
while(r_cnt+w_cnt>=2) <=====××××这一步有问题××××
等待conditon
解锁mutex
}
解除写锁
{
锁mutex
w_cnt--;
广播condition
解除写锁
解锁mutex
}
原文说适用于读多写少的情况。但是想象一下如果目前有一个线... 阅读全帖 |
|