Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 10/07/2013 in all areas

  1. Very often I will be working on a VI then get frustrated when the block diagram cleanup button is missing...only to realize that I was indeed on the Front Panel. The good news is Jack already has an idea so I don't need to take the time to post it. http://forums.ni.com/t5/LabVIEW-Idea-Exchange/How-about-a-Front-Panel-Cleanup/idi-p/963556
    1 point
  2. It doesn't allow for classic race conditions (two places changing the same piece of data) because you HAVE to lock the data every time you want to access it (even if it's just for reading). What it does allow are deadlocks, which is what AQ was refering to. If you want a simple example, think of this psuedocode: A{ Lock (Data) B() Unlock (Data)}B{ Lock (Data) ... Unlock (Data)} A and B operate on the same data, so they each begin by requesting a lock. When you call A it request a lock, gets the lock and calls B. B then requests a lock, but doesn't get it because A already locked the data. Now B has to wait until A releases the lock and A has to wait until B finishes execution. That's deadlock. You know for sure you're going to run into this problem if you have a reference crossing the boundary of an IPE structure where it's been used. If you're using a reference in a structure, DON'T let that reference cross the boundary of the structure. Presumably the issue Jim ran into is more complicated, but the concept is basically the same - when you have a lock, you can lock yourself out in any number of ways.
    1 point
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.