玩玩DirectShow--(5)多线程

玩玩DirectShow--(5)多线程
引擎device不是多线程的(D3DCREATE_MULTITHREDED),不能在其他线程使用主线程创建的device.
用dshow的线程来更新texture的内容就有问题,开了d3d debug模式就能看到输出了。于是用到了线程间通信,我操,这么牛B的听起来这么高端的东东啊,我好怕怕啊,遂google之……

多线程编程之三——线程间通讯
多线程编程之三——线程间通讯
  1. 使用全局变量进行通信

    由于属于同一个进程的各个线程共享操作系统分配该进程的资源,故解决线程间通信最简单的一种方法是使用全局变量。对于标准类型的全局变量,我们建议使用volatile 修饰符,它告诉编译器无需对该变量作任何的优化,即无需将它放到一个寄存器中,并且该值可被外部改变。如果线程间所需传递的信息较复杂,我们可以定义一个结构,通过传递指向该结构的指针进行传递信息。
     
  2. 使用自定义消息

    我们可以在一个线程的执行函数中向另一个线程发送自定义的消息来达到通信的目的。一个线程向另外一个线程发送消息是通过操作系统实现的。利用Windows操作系统的消息驱动机制,当一个线程发出一条消息时,操作系统首先接收到该消息,然后把该消息转发给目标线程,接收消息的线程必须已经建立了消息循环。


一个全局变量搞定(dshow的线程通知下主线程更新texture的内容)!

你可能感兴趣的:(玩玩DirectShow--(5)多线程)