User:Kernigh: Difference between revisions

Content added Content deleted
m (Add deal cards for FreeCell to list.)
(Add SHA-1. Remove unused code.)
Line 56: Line 56:
** [[Return multiple values]]
** [[Return multiple values]]
** [[Set]]
** [[Set]]
** [[SHA-1]]
** [[Subtractive generator]]
** [[Subtractive generator]]

== 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

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

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