Suppose I have a pair of (producer, consumer) YARV threads (Tp
,Tc
) sharing an Array
q
- Tp
pushes to q
, and Tc
pops from it. If the order in which the pushes and pops get executed is unimportant, does the code work without any synchronization mechanism?
Are YARV Arrays' push/pop methods thread-safe?
372 Views Asked by bsam At
1
There are 1 best solutions below
Related Questions in RUBY
- Creating Access 07 DB with VB.net always runs Repair when opening it the first time
- ACE.oledb Not showing up in list of providers
- Reading .xls (97-2003) files with ACE after oppening them with Excel 2013
- ACE.OLEDB provider incorrectly reads some column names
- ACE oleDb drivers unable to handle huge excel files
- vb.net Application - what database to use (Access install is killing me)
- Use SQL Server Express engine in MS Access
- Excel crashes when attempting to open adodb connection
- How to force SQL Server Management Studio to use 64 bit Import Wizard to avoid error: Microsoft.ACE.OLEDB.12.0 provider is not registered
- Have I broken the Access Database Engine again?
Related Questions in YARV
- Creating Access 07 DB with VB.net always runs Repair when opening it the first time
- ACE.oledb Not showing up in list of providers
- Reading .xls (97-2003) files with ACE after oppening them with Excel 2013
- ACE.OLEDB provider incorrectly reads some column names
- ACE oleDb drivers unable to handle huge excel files
- vb.net Application - what database to use (Access install is killing me)
- Use SQL Server Express engine in MS Access
- Excel crashes when attempting to open adodb connection
- How to force SQL Server Management Studio to use 64 bit Import Wizard to avoid error: Microsoft.ACE.OLEDB.12.0 provider is not registered
- Have I broken the Access Database Engine again?
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Accessing arrays is thread-safe in MRI/YARV (and only there) most of the time due to its global interpreter lock (GIL), thus mostly by accident.
You still would have to make sure that you are only performing a single operation each time and avoid read/write constructs. In other Ruby implementations like Rubinius or JRuby, Arrays are explicitly not thread safe.
With that being said, Ruby ships with a different primitive for inter-thread communication, which co-incidentaly is about the only class in MRI/VARV which is explicitly thread-safe: the Queue. It supports pushing and poping objects in a thread-safe way.
Take this example from Ruby's documentation:
There also exists a well-maintained project called concurrent-ruby which offers a lot of powerful primitives for concurrent programming across threads.