mailing list archives
Making Threads Wait for Other Thread's Results
From: "Patrick Donnelly" <batrick.donnelly () gmail com>
Date: Fri, 6 Jun 2008 04:12:42 -0600
I've formed a solution for the problem discussed in this thread:
The problem is threads (coroutines) have no method of entering and
leaving the waiting thread queue except through the nsock library.
This introduces problems for scripts that query a service that may ban
your IP if many threads are making queries for different targets at
the same time.
I'm going to add a function to the nmap library that allows you to
yield the current thread so long as certain conditions are met
(discussed later). The function is passed the Script's ID
(http://nmap.org/book/nse-scripts.html#nse-format-id) in order to
generate a function that allows you to yield your thread. This
function is to be called with string "lock" in order to get a lock for
thread's of that script (similar to a mutex). It should be called
before any "competitive" work is done by each thread. Once this
function returns, you can continue as normal. When your thread is
finished, before returning from main (action), you must release your
lock by calling the function again with the argument "done". It's
functionality will work as follows:
author = "Patrick"
id = "My script's unique ID"
local my_mutex = nmap.mutex(id);
function action(host, port)
-- Do stuff
If you have any comments or questions please ask.
"One of the lessons of history is that nothing is often a good thing
to do and always a clever thing to say."
Sent through the nmap-dev mailing list
Archived at http://SecLists.Org
- Making Threads Wait for Other Thread's Results Patrick Donnelly (Jun 06)