zoukankan      html  css  js  c++  java
  • 写GStreamer插件的时候,不要使用全局变量!

    在写gstreamer element的时候,不能使用全局变量。因为element可能在一个进程中被创建多个,比如一个pipeline中就可能有多个queue。要把这些变量全部放到该element的class中去,作为成员变量即可。因为一个进程如果使用了多个该element的话,会创建多个GObject,所以,成员变量也会有多份。如果写成全局变量,那就所有的object共享一个了,会出问题。(其实就把GObject看成一个structure好了,多个GObject在内存中就是多个structure,所以,成员变量不会冲突。而全局变量始终只有一份的)。 

    之前还写代码研究过动态库中的全局变量的问题。当一个动态库被多个程序加载时,在内存中动态库只有一份,那么,多个程序同时使用的时候,动态库中的全局变量是否会出问题?答案是不会,因为动态库的数据段每个程序(进程)是独立的,代码段可能是共享的。动态库中的全局变量是copy-on-write的机制,一旦有写入的操作,就会创建一份新的copy出来。
  • 相关阅读:
    python实现决策树
    ag 命令的帮助文档
    Linux rsync 命令学习
    常用数学符号读法及其含义
    Python 数据分析
    Django 创建项目笔记
    Python 实用技巧
    Python 必备好库
    Pytest 简明教程
    Python 打包中 setpy.py settuptools pbr 的了解
  • 原文地址:https://www.cnblogs.com/super119/p/1924411.html
Copyright © 2011-2022 走看看