in reply to Re^6: Rosetta Code: Long List is Long (faster - vec - OpenMP)
in thread Rosetta Code: Long List is Long
Very interesting! This will help me get started with OpenMP, which I've been meaning to do for a while now.
Unfortunately, strtok is not thread-safe e.g. strtok(NULL, "\n") causing segfault. So I factored out strtok.
Ha ha, that I used strtok at all is an indication of how desperate I was, given I singled this function out for a special dishonourable mention at On Interfaces and APIs. :)
To round out this section, notice that the ANSI C strtok function has a shocker of an interface: it surprises by writing NULLs into the input string being tokenized; the first call has different semantics to subsequent calls (distinguished by special-case logic on the value of its first parameter); and it stores state between calls so that only one sequence of calls can be active at a time (bad enough in a single-threaded environment, but so intolerable in multi-threaded and signal handler (reentrant) environments that the POSIX threads committee invented a replacement strtok_r function).
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^8: Rosetta Code: Long List is Long (faster - vec - OpenMP)
by marioroy (Prior) on Jan 11, 2023 at 22:07 UTC |