Home Memory consumption concern regarding asynchronous code in Perl
Reply: 0

Memory consumption concern regarding asynchronous code in Perl

user44654
1#
user44654 Published in September 20, 2018, 4:53 pm

I'm running a Perl web server which needs to do some work asynchronously. For this, I use the threads module in the following way:

threads->create(sub {
  # Asynchronous code here
  threads->exit();
});

I have some concerns regarding the correctness of this. Whenever I exit the server, I get the following message:

Perl exited with active threads:
0 running and unjoined
1 finished and unjoined
0 running and detached

I guess this has to do with the fact that I didn't joined or detached my thread. Detaching my thread would be a good solution but, unfortunately, it triggers this: https://bugzilla.redhat.com/show_bug.cgi?id=548249.

Now, here are my questions. Is there any problem with running the thread without joining or detaching it? Is it going to be a memory leak because of the unjoined/undetached threads? Should I run some cleanup code to take care of the finished threads?

Thank you in advance!

share|improve this question
  • Given that this bug doesn't exist in Perl 5.10+ and 5.10.0 was released in 2007, my preferred solution would be to use a perl from this decade (one that's still being maintained). – melpomene Feb 14 at 7:14
  • I'm using Perl 5.26.1 – George R. Feb 14 at 7:31
  • Then you're not affected by that thread bug (which I now notice was also fixed in perl-5.8.8-29.el5 in RedHat). – melpomene Feb 14 at 7:32
  • The bug you link is in an ancient version of Perl. v5.10 specifically got a number of thread fixes. – ikegami Feb 14 at 7:39
  • There's no difference between a unjoined, undetached thread and a running detached thread except for that message (and the ability to join the thread). – ikegami Feb 14 at 7:45

active oldest votes

Your Answer

StackExchange.ifUsing("editor", function () { StackExchange.using("externalEditor", function () { StackExchange.using("snippets", function () { StackExchange.snippets.init(); }); }); }, "code-snippets"); StackExchange.ready(function() { var channelOptions = { tags: "".split(" "), id: "1" }; initTagRenderer("".split(" "), "".split(" "), channelOptions); StackExchange.using("externalEditor", function() { // Have to fire editor after snippets, if snippets enabled if (StackExchange.settings.snippets.snippetsEnabled) { StackExchange.using("snippets", function() { createEditor(); }); } else { createEditor(); } }); function createEditor() { StackExchange.prepareEditor({ heartbeatType: 'answer', convertImagesToLinks: true, noModals: false, showLowRepImageUploadWarning: true, reputationToPostImages: 10, bindNavPrevention: true, postfix: "", onDemand: true, discardSelector: ".discard-answer" ,immediatelyShowMarkdownHelp:true }); } });
 
StackExchange.ready( function () { StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f48781445%2fmemory-consumption-concern-regarding-asynchronous-code-in-perl%23new-answer', 'question_page'); } );

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Browse other questions tagged multithreading perl asynchronous memory or ask your own question.

StackExchange.ready(function(){$.get('/posts/48781445/ivc/6fe1');});
StackExchange.ready(function () { StackExchange.responsiveness.addSwitcher(); }) (function(i, s, o, g, r, a, m) { i['GoogleAnalyticsObject'] = r; i[r] = i[r] || function() { (i[r].q = i[r].q || []).push(arguments) }, i[r].l = 1 * new Date(); a = s.createElement(o), m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m); })(window, document, 'script', 'https://www.google-analytics.com/analytics.js', 'ga'); StackExchange.ready(function () { StackExchange.ga.init({ sendTitles: true, tracker: window.ga, trackingCodes: [ 'UA-108242619-1' ] }); StackExchange.ga.setDimension('dimension2', '|multithreading|perl|asynchronous|memory|'); StackExchange.ga.setDimension('dimension3', 'Questions/Show'); StackExchange.ga.trackPageView(); }); /**/ var _qevents = _qevents || [], _comscore = _comscore || []; (function() { var ssl = 'https:' == document.location.protocol, s = document.getElementsByTagName('script')[0], qc = document.createElement('script'); qc.async = true; qc.src = (ssl ? 'https://secure' : 'http://edge') + '.quantserve.com/quant.js'; s.parentNode.insertBefore(qc, s); _qevents.push({ qacct: "p-c1rF4kxgLUzNc" }); /**/ var sc = document.createElement('script'); sc.async = true; sc.src = (ssl ? 'https://sb' : 'http://b') + '.scorecardresearch.com/beacon.js'; s.parentNode.insertBefore(sc, s); _comscore.push({ c1: "2", c2: "17440561" }); })();
You need to login account before you can post.

About| Privacy statement| Terms of Service| Advertising| Contact us| Help| Sitemap|
Processed in 0.372004 second(s) , Gzip On .

© 2016 Powered by mzan.com design MATCHINFO