由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 一个多线程的题目,这个写法可以过关么
相关主题
read-write locker的实现面试题
请问pure storage 的那道用spin lock and flags to implement mutex怎么做攒人品。面试经历(2)
multi-threading guru们问道多线程的简单题目
请教一下那道H2O的题C++ Singleton的实现
请教大牛用mutex lock实现reader writer locknVidia phone interview (intern Infrastructure Arch)
碰到面试官水平太差看不懂答案怎么办?Palantir 2nd coding interview [pass, set for on-site]
是不是被印度人故意往沟里带谁给讲讲test-and-set怎么实现mutex?
急求大神指导一道面经nvidia面筋
相关话题的讨论汇总
话题: pthread话题: mlock话题: cond话题: void话题: mutex
进入JobHunting版参与讨论
1 (共1页)
t**r
发帖数: 3428
1
You have two threads one printing even numbers in order and other odd
numbers. Design an algorithm so that it prints numbers in natural order
#include
#include
pthread_mutex_t mlock=PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t cond=PTHREAD_COND_INITIALIZER;
int flag=0;
void *EVEN(void *param);
void *ODD(void *param);
int main()
{
pthread_t etid,otid;
pthread_create(&etid,NULL,EVEN,NULL);
pthread_create(&otid,NULL,ODD,NULL);
pthread_exit(NULL);
}
void *EVEN(void *param)
{
int x=0;
int i;
for(i=0;i<20;i++)
{
pthread_mutex_lock(&mlock);
if(flag==1)
pthread_cond_wait(&cond,&mlock);
printf("%d ",x);
x=x+2;
flag=1;
pthread_cond_signal(&cond);
pthread_mutex_unlock(&mlock);
}
}
void *ODD(void *param)
{
int x=1;
int i;
for(i=0;i<20;i++)
{
pthread_mutex_lock(&mlock);
if(flag==0)
pthread_cond_wait(&cond,&mlock);
printf("%d ",x);
x=x+2;
flag=0;
pthread_mutex_unlock(&mlock);
pthread_cond_signal(&cond);
}
m*****n
发帖数: 2152
2
试着运行一下的你的code,发现不能打印出必要信息。
改了一下,就可以了。
#include
#include
pthread_mutex_t mlock=PTHREAD_MUTEX_INITIALIZER;
int count=0;
void *EVEN(void *param);
void *ODD(void *param);
int main()
{
pthread_t etid,otid;
pthread_create(&etid,NULL,EVEN,NULL);
pthread_create(&otid,NULL,ODD,NULL);
pthread_exit(NULL);
}
void *EVEN(void *param)
{
while(count<20)
{
pthread_mutex_lock(&mlock);
if(count%2==0)
{
printf("%d ", count);
count++;
}
pthread_mutex_unlock(&mlock);
}
}
void *ODD(void *param)
{
while(count<20)
{
pthread_mutex_lock(&mlock);
if(count%2==1)
{
printf("%d ", count);
count++;
}
pthread_mutex_unlock(&mlock);
}
}
w********s
发帖数: 1570
3
use std11
std::thread, mutex, scoped_lock, etc

【在 m*****n 的大作中提到】
: 试着运行一下的你的code,发现不能打印出必要信息。
: 改了一下,就可以了。
: #include
: #include
: pthread_mutex_t mlock=PTHREAD_MUTEX_INITIALIZER;
: int count=0;
: void *EVEN(void *param);
: void *ODD(void *param);
: int main()
: {

m*****n
发帖数: 2152
4
据说c++11的thread不支持优先级,是不是真的?
而且,现在posix已经很流行了,支持很广了,用c++11 thread不好找工作吧。

【在 w********s 的大作中提到】
: use std11
: std::thread, mutex, scoped_lock, etc

w********s
发帖数: 1570
5
可移植性,代码可维护性,比pthread强多了

【在 m*****n 的大作中提到】
: 据说c++11的thread不支持优先级,是不是真的?
: 而且,现在posix已经很流行了,支持很广了,用c++11 thread不好找工作吧。

m*****n
发帖数: 2152
6
这个我承认,pthread的C程序,看的都头晕。如果有选择,我宁愿用C++11的thread,
可惜,就怕不好找工作。

【在 w********s 的大作中提到】
: 可移植性,代码可维护性,比pthread强多了
m**p
发帖数: 189
7
你很谦虚, 你的code比他好了不止一点。
但是思路是一样的, 就是lock the count
如果一个thread多次进入, 就有一些问题。
为什么不试试 event, conditional variable?

【在 m*****n 的大作中提到】
: 试着运行一下的你的code,发现不能打印出必要信息。
: 改了一下,就可以了。
: #include
: #include
: pthread_mutex_t mlock=PTHREAD_MUTEX_INITIALIZER;
: int count=0;
: void *EVEN(void *param);
: void *ODD(void *param);
: int main()
: {

1 (共1页)
进入JobHunting版参与讨论
相关主题
nvidia面筋请教大牛用mutex lock实现reader writer lock
谁给改一个线程安全的smarter pointer类碰到面试官水平太差看不懂答案怎么办?
pthread 编程还是要看看阿是不是被印度人故意往沟里带
贡献一道湾区小公司的面试题 Medallia急求大神指导一道面经
read-write locker的实现面试题
请问pure storage 的那道用spin lock and flags to implement mutex怎么做攒人品。面试经历(2)
multi-threading guru们问道多线程的简单题目
请教一下那道H2O的题C++ Singleton的实现
相关话题的讨论汇总
话题: pthread话题: mlock话题: cond话题: void话题: mutex