Teory question: About Signal and Slot priority



  • Hi everyone!

    I called this post a "Teory question" because I have no actual problem with a program, but would like to get to know how Qt internally works, and havent been able to find documentation about it.

    I have a program that functions 100% with a signal and slot system. It continuously recieves TCP/UDP packets, and there are also loads of timers that are executed depending on those packets, what I would like to know is how this works because, as my program grows bigger, I sometimes find some timing issues.

    Lets assume I recieved a Signal because a timer has expired. I will enter a specific Slot, lets call it Slot"A" that requires some proccesing, and takes some time.
    While im working with this, another timer expires ("Slot B"), and I recieve both a TCP (Slot "C") and UDP packet (Slot "D")... how will Qt proceed?
    Once "A" finishes, it will continue with "B", "C" and "D"?
    Is "A" stopped, in order to continue with the newsest "interruption"?
    If I manually call a Slot inside my Slot "A", lets call him, slot "Z", (meaning slot "Z" is not called by a signal, but I manually call him because of a specific reason)
    How will Qt proceed?
    A Z B C D? or
    A B C D Z?
    Is there a way to give higher priority to a specific Slot?
    Do Slots always finish? Or theres a chance that an "interruption" occurs and the program follows from another point, and then returns to this Slot?

    Currently on my program I have like 20 signals per seconds, each one with different slots, and this is a program that needs to work 24/7, and some of these slots require heavy processing (like writing .txt files, or doing series of queries on a SQL database) Thats why I want to understand better how Qt works, in order to be able to boost my program perfomance.

    Could someone point me to a wiki or someone where I can get this information?

    Thanks in advance!


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.