当前位置:  技术问答>linux和unix

Pthread一个牵涉两个线程同步,每轮先串行后并行的问题

    来源: 互联网  发布时间:2016-09-12

    本文导语:  工作中牵涉到一个稍微复杂一点的线程同步问题,问题描述如下: 有两个thread:t1和t2 1、t1做N个时间步,t2做一个时间步(都是差分时间步),换句话说每个t2和N个t1同步 2、同步时,t1和t2要交换一下数据,t1先传1个...

工作中牵涉到一个稍微复杂一点的线程同步问题,问题描述如下:
有两个thread:t1和t2
1、t1做N个时间步,t2做一个时间步(都是差分时间步),换句话说每个t2和N个t1同步
2、同步时,t1和t2要交换一下数据,t1先传1个链表tL1给t2,t2用这个tL1算两个链表值(DataProcess),tL2a,tL2b,一个要回传给t1(tL2a,之后t1的N步都要用到这个tL2a),另一个tL2b是t2下一步自己计算要用到的,这个过程是串行(原来并行的强制串行).
3、交换完数据,t1和t2各自完成自己时间步计算,这个过程中t1做一个积分(N步),t2解一个方程,无论哪个先完成,都需要等到双方都完成了,才能开始下一轮的计算(也就是回到2),这个过程是并行的.
我贴了一个简单的框架,只是保证t1做一步,t2做一步,因为刚开始接触并行内容,所以请各位大牛指点一下,这个每轮先串行后并行的过程如何实现,比如是不是需要两个mutex,两个condition variable,等等,希望我已经描述清楚了, 谢谢!

Pthread一个牵涉两个线程同步,每轮先串行后并行的问题[图片]


#include 
#include 
#include 

pthread_mutex_t t1_mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t t2_mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t  cv_t2_ready  = PTHREAD_COND_INITIALIZER;
pthread_cond_t  cv_t1_ready  = PTHREAD_COND_INITIALIZER;

void *t1_func();
void *t2_func();
int it1;
int it2;
int t1_ready=0;

#define NT2 5
#define N 3
#define NT1 NT2*N

main()
{
   pthread_t thread1, thread2;

   pthread_create( &thread1, NULL, &t1_func, NULL);
   pthread_create( &thread2, NULL, &t2_func, NULL);
   pthread_join( thread1, NULL);
   pthread_join( thread2, NULL);

   exit(0);
}

void *t1_func() /*t1 thread*/
{
   for(it1=0;it1

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 先pthread_cancel()再pthread_join(),主线程退出?
  • 大家好,pthread库创建线程,如何等待线程安全退出?
  • 一个线程能用pthread_kill(pid,SIGHUP)将另一个线程挂起么?
  • 问一个关于pthread线程删除(取消)的问题
  • 跪求:linux下pthread 双线程计算和单线程的运行时间完全相同是为什么?
  • 请问pthread_mutex_lock()和pthread_mutex_unlock()可不可以用于对不同进程的线程进行同步。
  • Unix中PThread是干什么用的,创建线程吗---小妹
  • 请教:pthread_join( )在等待一个已经退出的线程时为何会导致死锁?
  • 请教一个pthread线程库的使用的问题
  • 问个pthread线程库的问题
  • pthread线程问题
  • 求教,关于pthread_join 以及线程之间关系的问题
  • 用pthread_create建立线程后如何让线程运行的函数在create完了之后才实际运行 相当与windows下的CREATE_SUSPENDED ??
  • 求助!pthread与Win32 API线程库的对应问题
  • 关于线程pthread.h
  • 能不能查看获取pthread_mutex_t的线程id?
  • 请教sleep和pthread_delay_np:阻塞线程/阻塞进程?
  • pthread_cond_timedwait用来让线程睡眠无效?
  • Linux的线程库pthread是否有"亲缘性"的概念?
  • linux下进程和线程的区别(fork(),pthread_create())?
  • unix/Linux下c/c++ pthread库读写锁函数介绍
  • pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);和pthread_detach(pthread_self()); 有区别吗。怎么我执行的效果不一样
  • pthread_attr_init()及pthread_cond_wait使用疑惑
  • pthread_cond_signal和pthread_cond_wait两个函数是怎么意思?
  • php iis7站长之家
  • 请问一下红色字体处的区别,及pthread_self()和pthread_creat()函数第一个参数的区别?
  • pthread_cond_wait 之前的 pthread_mutex_lock 语句 有什么作用,可以不用吗?
  • pthread_cancel和pthread_cond_wait
  • pthread_cond_t和pthread_mutex_t的疑问?
  • pthread_cond_t进入等待状态,则pthread_mutex_t无效...
  • LINUX关于pthread_create 和pthread_join


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3