User:Kernigh: Difference between revisions

From Rosetta Code
Content added Content deleted
(Add Lisp variants; add note about ActionWML and CMake.)
(This code is in progress.)
Line 27: Line 27:


[http://wiki.wesnoth.org/ActionWML ActionWML] is the scripting language from the Battle for Wesnoth. [http://www.cmake.org/ CMake] is a build system with its own scripting language.
[http://wiki.wesnoth.org/ActionWML ActionWML] is the scripting language from the Battle for Wesnoth. [http://www.cmake.org/ CMake] is a build system with its own scripting language.

== In progress ==
<lang c>#include <stdio.h>
#include <stdlib.h>

#if defined(_WIN32)
#include <windows.h>
#include <process.h>

/* ARGSUSED */
unsigned __stdcall
run2(void *arg)
{
printf(" %d\n", rand());
printf(" %d\n", rand());
printf(" %d\n", rand());
return 0;
}

void
run(void)
{
HANDLE thread;
thread = (HANDLE)_beginthreadex(NULL, 0, run2, NULL, 0, NULL);
if (thread) {
WaitForSingleObject(thread, INFINITE);
CloseHandle(thread);
} else
puts("Error!");
}
#elif defined(__unix__)
#include <pthread.h>

/* ARGSUSED */
void *
run2(void *arg)
{
printf(" %d\n", rand());
printf(" %d\n", rand());
printf(" %d\n", rand());
return NULL;
}

void
run(void)
{
pthread_t thread;
if (pthread_create(&thread, NULL, run2, NULL) ||
pthread_join(thread, NULL))
puts("Error!");
}
#else
#error Port run() to your system.
#endif

/* ARGSUSED */
void
three(void)
{
printf(" %d\n", rand());
printf(" %d\n", rand());
printf(" %d\n", rand());
}

int
main()
{
puts("Thread A:");
run();
puts("Thread B:");
run();
return 0;
}</lang>

<pre>Thread A:
41
18467
6334
Thread B:
41
18467
6334</pre>

Revision as of 23:46, 13 July 2011

My Favorite Languages
Language Proficiency
Ruby 4
C 3
Java 3
Perl 3
UNIX Shell 3
ActionWML 2
AWK 2
bc 2
CMake 2
Common Lisp 2
dc 2
make 2
Factor 1!
m4 1
PicoLisp 1!
Python 1
Scala 1!
sed 1

Language proficiency:

  • 4 I prefer this language.
  • 3 I know much about this language. I can solve many tasks.
  • 2 I know part of this language. I can solve some tasks.
  • 1 I can only use this language for a few simple tasks.
  • ! I never used this language until I saw it at Rosetta Code.

ActionWML is the scripting language from the Battle for Wesnoth. CMake is a build system with its own scripting language.

In progress

<lang c>#include <stdio.h>

  1. include <stdlib.h>
  1. if defined(_WIN32)
  2. include <windows.h>
  3. include <process.h>

/* ARGSUSED */ unsigned __stdcall run2(void *arg) { printf(" %d\n", rand()); printf(" %d\n", rand()); printf(" %d\n", rand()); return 0; }

void run(void) { HANDLE thread; thread = (HANDLE)_beginthreadex(NULL, 0, run2, NULL, 0, NULL); if (thread) { WaitForSingleObject(thread, INFINITE); CloseHandle(thread); } else puts("Error!"); }

  1. elif defined(__unix__)
  2. include <pthread.h>

/* ARGSUSED */ void * run2(void *arg) { printf(" %d\n", rand()); printf(" %d\n", rand()); printf(" %d\n", rand()); return NULL; }

void run(void) { pthread_t thread; if (pthread_create(&thread, NULL, run2, NULL) || pthread_join(thread, NULL)) puts("Error!"); }

  1. else
  2. error Port run() to your system.
  3. endif

/* ARGSUSED */ void three(void) { printf(" %d\n", rand()); printf(" %d\n", rand()); printf(" %d\n", rand()); }

int main() { puts("Thread A:"); run(); puts("Thread B:"); run(); return 0; }</lang>

Thread A:
  41
  18467
  6334
Thread B:
  41
  18467
  6334