Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 135147
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 11, 20262026-05-11T06:44:28+00:00 2026-05-11T06:44:28+00:00

I am developing a program that use DirectShow to grab audio data from media

  • 0

I am developing a program that use DirectShow to grab audio data from media files. DirectShow use thread to pass audio data to the callback function in my program, and I let that callback function call another function in Python.

I use Boost.Python to wrapper my library, the callback function :

class PythonCallback { private:     object m_Function; public:     PythonCallback(object obj)         : m_Function(obj)     {}      void operator() (double time, const AudioData &data) {         // Call the callback function in python         m_Function(time, data);     }  }; 

Here comes the problem, a thread of DirectShow calls my PythonCallback, namely, call the function in Python. Once it calls, my program just crash. I found this should be threading problem. Then I found this document:

http://docs.python.org/c-api/init.html

It seems that my program can’t call to Python’s function from thread directly, because there is Global Interpreter Lock. The python’s GIL is so complex, I have no idea how it works. I’m sorry, what I can do is to ask. My question is. What should I do before and after I call a Python function from threads?

It may looks like this.

void operator() (double time, const AudioData &data) {     // acquire lock     m_Function(time, data);     // release lock } 

Thanks. Victor Lin.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. 2026-05-11T06:44:29+00:00Added an answer on May 11, 2026 at 6:44 am

    Take a look at PyGILState_Ensure()/PyGILState_Release(), from PEP 311 http://www.python.org/dev/peps/pep-0311/

    Here is an example taken from the PEP itself:

    void SomeCFunction(void) {     /* ensure we hold the lock */     PyGILState_STATE state = PyGILState_Ensure();     /* Use the Python API */     ...     /* Restore the state of Python */     PyGILState_Release(state); } 
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 119k
  • Answers 119k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer Are you defining this xaml code in generic.xaml or in… May 11, 2026 at 11:49 pm
  • Editorial Team
    Editorial Team added an answer Try windowComplete instead of creationComplete. Also: [If] you are trying… May 11, 2026 at 11:49 pm
  • Editorial Team
    Editorial Team added an answer Well the purpose of JSONP is to wrap the JSON… May 11, 2026 at 11:49 pm

Related Questions

I'm developing a DirectShow application. I encounter a deadlock problem, the problem seems caused
I'm having a hard time figuring this problem out - I am trying to
I am developing a GPL-licensed application in Python and need to know if the
I am developing a multi-threading application, which is deadlocking. I am using Visual C++

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.