linux 线程调度

iamwjp 2011-07-07 02:58:34
有n个线程,n=2吧,发现线程2的取作业时间tv1总在线程1返回结果tv2之后,源码示例如下:


pthread_mutex_t* g_pLock1, *g_pLock2;


void* work_thread(void*)
{
struct timeval tv1, tv2;

while(1)
{
{
pthread_mutex_lock(g_pLock1);
//get job
pthread_mutex_unlock(g_pLock1);
}

gettimeofday(&tv1, NULL);

//processing

{
pthread_mutex_lock(g_pLock2);
//push result
pthread_mutex_unlock(g_pLock2);
}
gettimeofday(&tv2, NULL);
}
}

谁能解说下
...全文
81 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
至善者善之敌 2011-07-07
  • 打赏
  • 举报
回复
恩,即使优先级高的线程,也未必先执行!
yfk 2011-07-07
  • 打赏
  • 举报
回复
更确切的说,控制下的随机
控制包括,先到先得,优先级等
就想叫yoko 2011-07-07
  • 打赏
  • 举报
回复
线程的调度就是这样
随机调度
iamwjp 2011-07-07
  • 打赏
  • 举报
回复
运行时间长点是可以的,只是我想搞明白为什么会这样
luciferisnotsatan 2011-07-07
  • 打赏
  • 举报
回复
gettimeofday(&tv1, NULL);后加个sleep看看。

或者运行时间长点
就想叫yoko 2011-07-07
  • 打赏
  • 举报
回复
只能说一个线程
pthread_mutex_lock(g_pLock1);


那另一个线程

pthread_mutex_lock(g_pLock1);
会阻塞住 直到那个线程
pthread_mutex_unlock(g_pLock1);
就想叫yoko 2011-07-07
  • 打赏
  • 举报
回复
这个不一定的

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧