Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c++ > #124177
| From | "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> |
|---|---|
| Newsgroups | comp.lang.c++ |
| Subject | Re: How to inline the main function of a thread? |
| Date | 2026-07-03 12:44 -0700 |
| Organization | A noiseless patient Spider |
| Message-ID | <11293ea$3l5mi$1@dont-email.me> (permalink) |
| References | (2 earlier) <11206me$10vvd$1@dont-email.me> <1123pg3$23fuu$1@dont-email.me> <11256ip$150r7$1@dont-email.me> <1126bdf$2r6qm$1@dont-email.me> <1127tlv$39ak8$1@dont-email.me> |
On 7/3/2026 1:59 AM, boltar@caprica.universe wrote:
> On Thu, 2 Jul 2026 11:41:48 -0700
> "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> gabbled:
>> On 7/2/2026 1:13 AM, boltar@caprica.universe wrote:
>>> They're hard enough to make it a lot of pointless work if its not
>>> necessary. As I said, if you're creating threads every few
>>> milliseconds then
>>> use a thread pool. If you're just creating a thread every few seconds
>>> or longer then a pool is a complete waste of time.
>>
>> Thread per connection model? If that works for your work load, so be
>> it. Just don't be alarmed if you get 10000 threads all of sudden. Or,
>> say a connection comes in every second for say a half an hour. 1800
>> connections? Also you need to think about a connection that sends a
>> little data then just sits there doing nothing for say 20 minutes.
>
> You do realise setting up and pulling down a TCP connection takes far more
> CPU resources than simply adding a new program counter into the scheduler
> list, right? If we were talking about creating a new process via fork()
> then
> your argument might have some merit, but threads? No.
>
>>>> how are you handling the sync in your program logic to them? What do
>>>> they do?
>>>
>>> Is that supposed to be some kind of trick question?
>>
>> No. It means how to you say, join them, or are you detaching them? How
>> can you gain data from them? You need to know all about this if you
>> are going to use threads at all. Well, imvho that is...
>
> I would imagine most threads in a server process run detached. Joining
> makes
> little sense unless you specifically need to wait for the thread to
> complete
> its task in which case there might be an argument for doing the task
> sequentially anyway.
>
>> Do you have a "reaper" thread that can conduct "maintenance"? Zombie
>> states? Are you do graceful shutdowns?
>
> I'd hate to see your code, must be an overcomplicated mess.
>
Set your coffee down! Here is my raw test for my mind trying to sketch
out an IOCP server setup from my memory... It should compile for you, I
will show my ralloc code in follow up. I had a little trouble
remembering what the AcceptEx format for buffers is, IPv4 here. There
should be a sockaddrs for ipv6. Sigh, but I got this for now. Almost
ready for a proper thread pool! :^D
ct_main.cpp
________
#include "ct_ralloc.hpp"
#include <cstdio>
#include <cstdlib>
#include <cassert>
#include <iostream>
#include <thread>
#include <atomic>
#include <mutex>
#include <vector>
#define WIN32_LEAN_AND_MEAN
#include <winsock2.h>
#include <ws2tcpip.h>
#include <iphlpapi.h>
#include <mswsock.h>
#include <windows.h>
namespace ct
{
namespace tools
{
template<typename T>
struct ctor_dtor
{
T* m_ptr;
ctor_dtor(
T* ptr
): m_ptr(ptr) {
m_ptr->ctor();
}
~ctor_dtor()
{
m_ptr->dtor();
}
};
template<typename T>
struct dtor
{
T* m_ptr;
dtor(
T* ptr
) : m_ptr(ptr) {
}
~dtor()
{
m_ptr->dtor();
}
};
}
namespace proxy_0_0_0_0
{
struct atomic_region
{
unsigned char* m_raw_buffer = nullptr;
std::size_t m_usable = 0;
std::atomic<std::size_t> m_head = { 0 };
// move it out into an init...
void
init(
unsigned char* const raw_buffer,
std::size_t usable
) {
m_raw_buffer = raw_buffer;
m_usable = usable;
m_head.store(0, std::memory_order_relaxed);
}
unsigned char*
alloc(
std::size_t size
) {
/*
std::size_t old = m_head.fetch_add(size,
std::memory_order_relaxed);
if (old + size > m_usable)
{
m_head.exchange(m_usable, std::memory_order_relaxed);
return nullptr;
}
*/
// using a CAS loop here. Sigh. Shit happens! ;^)
std::size_t old = m_head.load(std::memory_order_relaxed);
do
{
if (old + size > m_usable) return nullptr;
} while (! m_head.compare_exchange_weak(old, old +
size, std::memory_order_relaxed));
return m_raw_buffer + old;
}
};
namespace win
{
bool
close_handle(
HANDLE handle
) {
BOOL status = CloseHandle(handle);
if (! status)
{
assert(status && "close_handle failed... God damn
it!");
// throw; Grrrr! SHIT is REALLY BAD!
// formatmessage, display? ;^)
return false;
}
return true;
}
struct alignas(MEMORY_ALLOCATION_ALIGNMENT) slist_node {
SLIST_ENTRY entry;
};
// Non-templated raw list (if n ever want it)
struct slist_raw {
SLIST_HEADER head;
void init() noexcept {
InitializeSListHead(&head);
}
void push(slist_node* n) noexcept {
InterlockedPushEntrySList(&head, &n->entry);
}
slist_node* pop() noexcept {
SLIST_ENTRY* e = InterlockedPopEntrySList(&head);
return e ? CONTAINING_RECORD(e, slist_node, entry)
: nullptr;
}
void flush() noexcept {
InterlockedFlushSList(&head);
}
};
struct wsa_extensions
{
LPFN_ACCEPTEX m_acceptex = nullptr;
LPFN_CONNECTEX m_connectex = nullptr;
LPFN_DISCONNECTEX m_disconnectex = nullptr;
LPFN_GETACCEPTEXSOCKADDRS m_getacceptexsockaddrs = nullptr;
bool
load(
SOCKET socket
) {
if (!load_fn(socket, WSAID_ACCEPTEX, &m_acceptex))
return false;
if (!load_fn(socket, WSAID_CONNECTEX,
&m_connectex)) return false;
if (!load_fn(socket, WSAID_DISCONNECTEX,
&m_disconnectex)) return false;
if (!load_fn(socket, WSAID_GETACCEPTEXSOCKADDRS,
&m_getacceptexsockaddrs))
return false;
std::cout <<
"(" << this << ")->"
"ct::proxy_0_0_0_0::win::"
"wsa_extensions::load()\n"
" m_acceptex = " << m_acceptex << "\n"
" m_connectex = " << m_connectex <<
"\n"
" m_disconnectex = " << m_disconnectex
<< "\n"
" m_getacceptexsockaddrs = " <<
m_getacceptexsockaddrs << "\n";
return true;
}
private:
template<typename T>
bool
load_fn(
SOCKET socket,
GUID guid,
T* fn_out
) {
DWORD bytes = 0;
int status = WSAIoctl(
socket,
SIO_GET_EXTENSION_FUNCTION_POINTER,
&guid, sizeof(guid),
fn_out, sizeof(*fn_out),
&bytes,
nullptr,
nullptr
);
if (status == SOCKET_ERROR)
{
std::cout << "WSAIoctl() failed: " <<
WSAGetLastError() << "\n";
return false;
}
return true;
}
};
struct winsock
{
WSADATA m_wsa_data = { };
wsa_extensions m_wsaex = { };
// extend for version...
winsock()
{
int status = WSAStartup(MAKEWORD(2, 2), &m_wsa_data);
if (status) {
std::cout << "WSAStartup() failed...\n";
throw std::runtime_error("WSAStartup failed");
}
std::cout << "WSAStartup()\n";
}
~winsock()
{
if (WSACleanup() == SOCKET_ERROR)
{
std::cout << "WSACleanup() failed...\n";
return;
}
std::cout << "WSACleanup()\n";
}
};
struct addr_info
{
addrinfo* m_result = nullptr;
addrinfo* m_ptr = nullptr;
addrinfo m_hints = { };
// need to extend add params
addr_info()
{
m_hints.ai_family = AF_INET;
m_hints.ai_socktype = SOCK_STREAM;
m_hints.ai_protocol = IPPROTO_TCP;
m_hints.ai_flags = AI_PASSIVE;
// resolve?
int status = getaddrinfo(nullptr, "8080", &m_hints,
&m_result);
if (status)
{
std::cout << "getaddrinfo() failed...\n";
throw std::runtime_error("getaddrinfo failed");
}
std::cout << "addr_info::addr_info()\n";
}
~addr_info()
{
freeaddrinfo(m_result);
std::cout << "addr_info::~addr_info()\n";
}
};
struct iocp
{
HANDLE m_iocp = nullptr;
iocp(
HANDLE handle = INVALID_HANDLE_VALUE,
HANDLE existing = nullptr,
ULONG_PTR key = 0,
DWORD thread_n = 0
) {
m_iocp = CreateIoCompletionPort(handle, existing,
key, thread_n);
if (! m_iocp)
{
DWORD last_error = GetLastError();
std::cout <<
"(" << this << ")->"
"ct::proxy_0_0_0_0::win::"
"iocp::iocp()::last_error = " <<
last_error;
throw
std::runtime_error("CreateIoCompletionPort failed");
}
std::cout <<
"(" << this << ")->"
"ct::proxy_0_0_0_0::win::"
"iocp::iocp()::ctor()\n";
}
~iocp()
{
if (! m_iocp)
{
assert(false && "m_iocp unexpectedly null in
destructor, fuck it all!");
// fuc% me! GRRRR!
return;
}
if (! close_handle(m_iocp))
{
// really bad!
return;
}
std::cout <<
"(" << this << ")->"
"ct::proxy_0_0_0_0::win::"
"iocp::iocp()::dtor()\n";
}
// no APC shit for now...
DWORD
gqcsex(
LPOVERLAPPED_ENTRY pol_inout,
ULONG pol_in_n,
PULONG pol_out_n,
DWORD timeout = INFINITE
) {
if (! GetQueuedCompletionStatusEx(
m_iocp,
pol_inout,
pol_in_n,
pol_out_n,
timeout,
FALSE
)) {
// humm, iirc these can be tricky...
DWORD last_error = GetLastError();
std::cout <<
"(" << this << ")->"
"ct::proxy_0_0_0_0::win::"
"iocp::gqcsex()::last_error = " <<
last_error;
// humm remember FormatMessage
return last_error;
}
return 0;
}
HANDLE
bind(
HANDLE handle,
ULONG_PTR key
) {
HANDLE status = CreateIoCompletionPort(
(HANDLE)handle,
m_iocp,
(ULONG_PTR)key,
0
);
return status;
}
};
// just for the windows test...
// its in the win namespace anyway... ;^)
#define CT_MACRO_QUOTE_0(mp_0)#mp_0 // rofl!
#define CT_MACRO_QUOTE(mp_0)CT_MACRO_QUOTE_0(mp_0) // rofl!
#define CT_IO_SYSTEM_L2_CACHE_LINE (128)
#define CT_PER_IO_ALIGN_PAD (CT_IO_SYSTEM_L2_CACHE_LINE)
#define CT_PER_IO_STATE_ACCEPT 0x1
#define CT_PER_IO_STATE_CONNECT 0x2
#define CT_PER_IO_STATE_DISCONNECT 0x4
#define CT_PER_IO_STATE_RECV 0x8
#define CT_PER_IO_STATE_SEND 0x10
#define CT_PER_SOCKET_ALIGN_PAD (CT_IO_SYSTEM_L2_CACHE_LINE)
#define CT_PER_SOCKET_BUFFER (CT_PER_SOCKET_ALIGN_PAD * 32)
#define CT_PER_SOCKET_STATE_CONNECTED 0x1
#define CT_PER_SOCKET_FROM_MALLOC 0x2
// per_io always owned by a single thread at any one time...
struct alignas(CT_PER_IO_ALIGN_PAD) per_io
{
struct per_io_raw
{
WSAOVERLAPPED m_ol;
slist_node m_slist_node;
per_io* m_next;
struct per_socket* m_per_socket; // not totally
nesserary... Humm...
unsigned long m_state;
unsigned char* m_buf;
std::size_t m_buf_n;
};
per_io_raw m_raw;
void ctor()
{
static_assert(offsetof(per_io, m_raw) == 0, "m_raw
must be first!");
static_assert(offsetof(per_io_raw, m_ol) == 0,
"m_ol must be first!");
m_raw = { };
std::cout <<
"(" << this << ")->"
"ct::proxy_0_0_0_0::win::"
"per_io::ctor()\n";
}
// not mandatory
void dtor()
{
std::cout <<
"(" << this << ")->"
"ct::proxy_0_0_0_0::win::"
"per_io::dtor()\n";
}
};
static_assert(
sizeof(per_io) == CT_PER_IO_ALIGN_PAD,
"per_io pad error" CT_MACRO_QUOTE(CT_PER_IO_ALIGN_PAD)
);
struct alignas(CT_PER_IO_ALIGN_PAD) per_socket
{
struct buffer
{
unsigned char m_raw_buffer[CT_PER_SOCKET_BUFFER];
};
struct per_socket_raw
{
slist_node m_slist_node;
per_socket* m_next;
std::atomic<unsigned long> m_state;
SOCKET m_socket;
unsigned char* m_buf;
std::size_t m_buf_n;
alignas(CT_PER_IO_ALIGN_PAD) buffer m_raw_buffer;
};
per_socket_raw m_raw;
void ctor()
{
m_raw.m_slist_node = { };
m_raw.m_next = nullptr;
m_raw.m_state.store(0, std::memory_order_relaxed);
m_raw.m_socket = INVALID_SOCKET;
m_raw.m_buf = m_raw.m_raw_buffer.m_raw_buffer;
m_raw.m_buf_n = CT_PER_SOCKET_BUFFER;
// well, init m_raw.m_raw_buffer ;^)
m_raw.m_raw_buffer = { 0 };
std::cout <<
"(" << this << ")->"
"ct::proxy_0_0_0_0::win::"
"per_socket::ctor()\n";
}
void dtor()
{
if (m_raw.m_socket != INVALID_SOCKET)
{
SOCKET old_socket = m_raw.m_socket;
m_raw.m_socket = INVALID_SOCKET;
if (closesocket(old_socket))
{
// GOD DAMN IT!
// fucking throw!
// GRRRRR!
// or extend ctor and dtor to return status
// How C can you get in C++? ;^D
return;
}
}
std::cout <<
"(" << this << ")->"
"ct::proxy_0_0_0_0::win::"
"per_socket::dtor()\n";
}
wsa_extensions
get_wsaex()
{
wsa_extensions wsaex;
wsaex.load(m_raw.m_socket);
return wsaex;
}
};
static_assert(
sizeof(per_socket) == CT_PER_SOCKET_ALIGN_PAD +
CT_PER_SOCKET_BUFFER &&
sizeof(per_socket) % CT_PER_SOCKET_ALIGN_PAD == 0,
"per_socket pad error"
CT_MACRO_QUOTE(CT_PER_SOCKET_ALIGN_PAD)
);
template<typename T>
struct single_threaded_stack
{
T* m_head = nullptr;
void
push(
T* node
) {
node->m_raw.m_next = m_head;
m_head = node;
}
T*
pop_try()
{
T* head = m_head;
if (head)
{
m_head = head->m_raw.m_next;
}
return head;
}
};
// abstract into io_system
struct io_system
{
ct::proxy_0_0_0_0::win::winsock m_winsock;
ct::proxy_0_0_0_0::win::iocp m_iocp;
std::vector<unsigned char> m_raw_buffer;
atomic_region m_atomic_region;
single_threaded_stack<per_io> m_per_io_pool;
single_threaded_stack<per_socket> m_per_socket_pool;
// need to ponder...
single_threaded_stack<per_socket> m_per_socket_active;
struct io_worker
{
io_system& m_system;
io_worker(
io_system& system
) : m_system(system)
{
}
int
io_worker_loop()
{
return 0;
}
};
// well might as well use a C++ ctor here...
// ;^D
io_system(
std::size_t usable,
std::size_t align,
std::size_t prime_per_io_n,
std::size_t prime_per_socket_n
): m_raw_buffer(usable + align - 1)
{
region raw_region = { };
rinit(&raw_region, m_raw_buffer.data(),
m_raw_buffer.size());
unsigned char* aligned_buffer =
static_cast<unsigned
char*>(rallocex(&raw_region, usable, align));
m_atomic_region.init(aligned_buffer, usable);
// prime per-io
{
std::size_t n = prime_per_io_n;
region pool_reg =
create_region_from_atomic(sizeof(per_io) * n);
for (int i = 0; i < n; ++i) {
per_io* p =
static_cast<per_io*>(rallocex(&pool_reg, sizeof(*p), CT_PER_IO_ALIGN_PAD));
p->ctor(); // Ensure constructor is called
m_per_io_pool.push(p);
}
}
// prime per-socket
{
std::size_t n = prime_per_socket_n;
region pool_reg =
create_region_from_atomic(sizeof(per_socket) * n);
for (int i = 0; i < n; ++i) {
per_socket* p =
static_cast<per_socket*>(rallocex(&pool_reg, sizeof(*p),
CT_PER_SOCKET_ALIGN_PAD));
p->ctor(); // Ensure constructor is called
m_per_socket_pool.push(p);
}
}
}
~io_system()
{
}
region
create_region_from_atomic(
std::size_t usable
) {
unsigned char* p = m_atomic_region.alloc(usable);
if (! p)
{
// time to fly...
return { nullptr };
}
region r = { };
rinit(&r, p, usable);
return r;
}
int
create_accept(
per_socket& listen_sock, // also renamed for
consistency
per_socket& accept_sock, // <--- demon slain
per_io& pio
) {
accept_sock.m_raw.m_socket = WSASocket(
AF_INET, SOCK_STREAM, IPPROTO_TCP,
nullptr, 0, WSA_FLAG_OVERLAPPED
);
if (accept_sock.m_raw.m_socket == INVALID_SOCKET)
{
std::cout << "create_accept WSASocket() failed: "
<< WSAGetLastError() << "\n";
return 1;
}
std::cout << "accept_socket = " <<
accept_sock.m_raw.m_socket << "\n";
pio.m_raw.m_buf = accept_sock.m_raw.m_buf;
pio.m_raw.m_buf_n = accept_sock.m_raw.m_buf_n;
pio.m_raw.m_per_socket = &accept_sock;
pio.m_raw.m_state |= CT_PER_IO_STATE_ACCEPT;
DWORD bytes_received = 0;
BOOL ok = m_winsock.m_wsaex.m_acceptex(
listen_sock.m_raw.m_socket,
accept_sock.m_raw.m_socket,
pio.m_raw.m_buf,
0,
sizeof(SOCKADDR_IN) + 16,
sizeof(SOCKADDR_IN) + 16,
&bytes_received,
&pio.m_raw.m_ol
);
if (!ok && WSAGetLastError() != ERROR_IO_PENDING)
{
std::cout << "AcceptEx failed: " <<
WSAGetLastError() << "\n";
return 1;
}
std::cout << "AcceptEx posted!\n";
return 0;
}
void
complete_accept(
per_socket& listen_sock, // renamed for
consistency
per_io& pio
) {
{
SOCKADDR* local_addr = nullptr;
SOCKADDR* remote_addr = nullptr;
int local_len = 0;
int remote_len = 0;
m_winsock.m_wsaex.m_getacceptexsockaddrs(
pio.m_raw.m_buf,
0,
sizeof(SOCKADDR_IN) + 16,
sizeof(SOCKADDR_IN) + 16,
&local_addr,
&local_len,
&remote_addr,
&remote_len
);
auto* local_in =
reinterpret_cast<SOCKADDR_IN*>(local_addr);
auto* remote_in =
reinterpret_cast<SOCKADDR_IN*>(remote_addr);
char addrbuf[INET6_ADDRSTRLEN] = { };
InetNtopA(
AF_INET,
&remote_in->sin_addr,
addrbuf,
sizeof(addrbuf)
);
std::cout << "client connected from "
<< addrbuf << ":"
<< ntohs(remote_in->sin_port) << "\n";
}
// fix up the accepted socket
int status = setsockopt(
pio.m_raw.m_per_socket->m_raw.m_socket,
SOL_SOCKET,
SO_UPDATE_ACCEPT_CONTEXT,
(char*)&listen_sock.m_raw.m_socket,
sizeof(SOCKET)
);
if (status)
{
// oh fuck me!
// throw; die die die! rofl. ;^D
return;
}
pio.m_raw.m_per_socket->m_raw.m_state.store(
CT_PER_SOCKET_STATE_CONNECTED,
std::memory_order_relaxed
);
// zero buffer before bind? ;^D Don't even need to,
but...
pio.m_raw.m_per_socket->m_raw.m_raw_buffer = { 0 };
// bind the sucker!
m_iocp.bind(
(HANDLE)pio.m_raw.m_per_socket->m_raw.m_socket,
(ULONG_PTR)pio.m_raw.m_per_socket
);
}
void
create_listen(
addr_info& addr_info_,
per_socket& listen_sock
) {
listen_sock.m_raw.m_socket = WSASocket(
addr_info_.m_result->ai_family,
addr_info_.m_result->ai_socktype,
addr_info_.m_result->ai_protocol,
nullptr, 0, WSA_FLAG_OVERLAPPED
);
if (listen_sock.m_raw.m_socket == INVALID_SOCKET)
{
std::cout << "WSASocket() for listen failed: "
<< WSAGetLastError() << "\n";
return;
}
std::cout << "listen socket = " <<
listen_sock.m_raw.m_socket << "\n";
m_winsock.m_wsaex.load(listen_sock.m_raw.m_socket);
if (::bind(listen_sock.m_raw.m_socket, //
explicit ::bind
addr_info_.m_result->ai_addr,
(int)addr_info_.m_result->ai_addrlen) ==
SOCKET_ERROR)
{
std::cout << "bind() failed: " <<
WSAGetLastError() << "\n";
return;
}
if (listen(listen_sock.m_raw.m_socket, SOMAXCONN)
== SOCKET_ERROR)
{
std::cout << "listen() failed: " <<
WSAGetLastError() << "\n";
return;
}
if (!m_iocp.bind(
(HANDLE)listen_sock.m_raw.m_socket,
(ULONG_PTR)&listen_sock
))
{
std::cout << "IOCP associate failed: " <<
GetLastError() << "\n";
return;
}
std::cout << "Listen socket fully set up.\n";
}
int
issue_recv(
per_socket& socket,
per_io& pio
) {
pio.m_raw.m_state |= CT_PER_IO_STATE_RECV;
WSABUF wbuf;
wbuf.buf = reinterpret_cast<char*>(pio.m_raw.m_buf);
wbuf.len = static_cast<ULONG>(pio.m_raw.m_buf_n);
DWORD flags = 0;
DWORD bytes = 0;
pio.m_raw.m_ol = WSAOVERLAPPED{};
int rc = WSARecv(
socket.m_raw.m_socket,
&wbuf,
1,
&bytes,
&flags,
&pio.m_raw.m_ol,
nullptr
);
if (rc == SOCKET_ERROR)
{
int err = WSAGetLastError();
if (err != WSA_IO_PENDING)
{
std::cout << "WSARecv failed: " << err << "\n";
return 1;
}
}
std::cout << "WSARecv posted\n";
return 0;
}
int
issue_send(
per_socket& socket,
per_io& pio
) {
// mark this IO as a send
pio.m_raw.m_state |= CT_PER_IO_STATE_SEND;
WSABUF wbuf;
wbuf.buf = reinterpret_cast<char*>(pio.m_raw.m_buf);
wbuf.len = static_cast<ULONG>(pio.m_raw.m_buf_n);
DWORD bytes = 0;
DWORD flags = 0;
// reset OVERLAPPED for this op
pio.m_raw.m_ol = WSAOVERLAPPED{};
int rc = WSASend(
socket.m_raw.m_socket,
&wbuf,
1,
&bytes,
flags,
&pio.m_raw.m_ol,
nullptr
);
if (rc == SOCKET_ERROR)
{
int err = WSAGetLastError();
if (err != WSA_IO_PENDING)
{
std::cout << "WSASend failed: " << err << "\n";
return 1;
}
}
std::cout << "WSASend posted\n";
return 0;
}
};
}
int
manifest()
{
int manifest_state = 0;
{
std::cout <<
"ct::proxy_0_0_0_0\n"
"ver (0.0.0.0) (pre-alpha)\n"
"by: Chris M. Thomasson\n"
"____________________________________" <<
std::endl;
{
// logic...
std::size_t iosys_usable = 1024 * 1024;
std::size_t iosys_prime_per_io = 16;
std::size_t iosys_prime_per_socket = 16;
std::size_t iosys_align = 8192;
ct::proxy_0_0_0_0::win::io_system iosys(
iosys_usable,
iosys_align,
iosys_prime_per_io,
iosys_prime_per_socket
);
{
struct ct::proxy_0_0_0_0::win::per_socket*
psocket_listen =
iosys.m_per_socket_pool.pop_try();
if (! psocket_listen)
{
// oh fuck that!
//throw; ;^D
return 1;
}
ct::tools::dtor
psocket_listen_raii(psocket_listen);
std::cout << "psocket_listen = " <<
psocket_listen << "\n";
{
ct::proxy_0_0_0_0::win::addr_info addr_info;
iosys.create_listen(addr_info,
*psocket_listen);
struct ct::proxy_0_0_0_0::win::per_socket*
psocket_accept =
iosys.m_per_socket_pool.pop_try();
ct::tools::dtor
psocket_accept_raii(psocket_accept);
std::cout << "psocket_accept = " <<
psocket_accept << "\n";
{
struct ct::proxy_0_0_0_0::win::per_io*
pio0 =
iosys.m_per_io_pool.pop_try();
if (! pio0)
{
// oh fuck that!
//throw; ;^D
return 1;
}
std::cout << "pio0 = " << pio0 << "\n";
iosys.create_accept(*psocket_listen,
*psocket_accept, *pio0);
{
// ADD THIS!
std::cout << "waiting... telnet
localhost 8080!\n";
// ;^D 42 hard code. Need to ponder.
OVERLAPPED_ENTRY pol[42] = { { } };
ULONG pol_n = 0;
// only recv 1...
DWORD s = iosys.m_iocp.gqcsex(pol,
1, &pol_n, INFINITE);
if (pol_n > 0)
{
// need a loop here... ;^) But
ct::proxy_0_0_0_0::win::per_io*
pio =
(ct::proxy_0_0_0_0::win::per_io*)pol[0].lpOverlapped;
std::cout << "socket match: "
<< (pio->m_raw.m_per_socket == psocket_accept ? "YES!!!" : "NO!!!") << "\n";
}
if (s == 0)
{
ct::proxy_0_0_0_0::win::per_io*
pio =
(ct::proxy_0_0_0_0::win::per_io*)pol[0].lpOverlapped;
std::cout << "gqcsex fired!\n";
std::cout << "pio = " << pio
<< "\n";
std::cout << "pio0 = " << pio0
<< "\n";
std::cout << "match: " << (pio
== pio0 ? "YES!!!" : "NO!!!") << "\n";
std::cout << "WE HAVE A
CONNECTION!!!\n";
if (pio->m_raw.m_state &
CT_PER_IO_STATE_ACCEPT)
{
std::cout << "accepted
per_socket " << pio->m_raw.m_per_socket << "\n";
iosys.complete_accept(*psocket_listen, *pio);
std::cout <<
"CT_PER_IO_STATE_ACCEPT\n";
//
pio->m_raw.m_per_socket->issue_wsa_recv(*pio);
iosys.issue_recv(*pio->m_raw.m_per_socket, *pio);
}
}
}
}
}
}
}
std::cout <<
"manifest_state = " << manifest_state << "\n";
std::cout << "____________________________________" <<
std::endl;
}
return manifest_state;
}
}
}
int main()
{
int main_state = 0;
std::cout <<
"ct_proxy\n"
"ver (0.0.0.0) (pre-alpha)\n"
"by: Chris M. Thomasson\n"
"getting back to my old IOCP work...\n"
"________________________________________________\n" <<
std::endl;
{
int state = ct::proxy_0_0_0_0::manifest();
{
// ponder on state. Some failures can be success... ;^)
}
main_state = state;
}
std::cout <<
"\n________________________________________________\n" <<
"main_state = " << main_state <<
"\nfin" <<
std::endl;
return EXIT_SUCCESS;
}
Back to comp.lang.c++ | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
How to inline the main function of a thread? Wuns Haerst <Wuns.Haerst@wurstfabrik.at> - 2026-06-30 10:27 +0200
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-06-30 01:42 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-06-30 10:44 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-01 12:23 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-02 08:13 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-02 11:41 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-03 08:59 +0000
Re: How to inline the main function of a thread? scott@slp53.sl.home (Scott Lurndal) - 2026-07-03 14:41 +0000
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-03 15:59 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-05 13:22 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-06 09:29 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-06 12:31 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-07 10:41 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-07 15:30 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-08 09:38 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-08 14:13 -0700
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-03 12:44 -0700
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-03 12:45 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-04 09:16 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-04 17:32 -0700
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-04 17:35 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-05 08:19 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-05 01:21 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-05 15:48 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-05 13:01 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-06 09:28 +0000
Re: How to inline the main function of a thread? Michael S <already5chosen@yahoo.com> - 2026-07-06 21:42 +0300
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-06 12:45 -0700
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-06 12:53 -0700
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-07 15:07 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-07 10:40 +0000
Re: How to inline the main function of a thread? Michael S <already5chosen@yahoo.com> - 2026-07-07 20:36 +0300
Re: How to inline the main function of a thread? scott@slp53.sl.home (Scott Lurndal) - 2026-07-07 18:09 +0000
Re: How to inline the main function of a thread? Michael S <already5chosen@yahoo.com> - 2026-07-07 21:40 +0300
Re: How to inline the main function of a thread? scott@slp53.sl.home (Scott Lurndal) - 2026-07-07 22:11 +0000
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-08 09:34 +0000
Re: How to inline the main function of a thread? Michael S <already5chosen@yahoo.com> - 2026-07-08 22:16 +0300
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-08 14:16 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-09 08:55 +0000
Re: How to inline the main function of a thread? scott@slp53.sl.home (Scott Lurndal) - 2026-07-09 15:18 +0000
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-09 15:43 +0000
Re: How to inline the main function of a thread? scott@slp53.sl.home (Scott Lurndal) - 2026-07-10 15:32 +0000
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-10 16:03 +0000
Re: How to inline the main function of a thread? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-07-09 14:07 -0700
Re: How to inline the main function of a thread? scott@slp53.sl.home (Scott Lurndal) - 2026-07-10 15:34 +0000
Re: How to inline the main function of a thread? Michael S <already5chosen@yahoo.com> - 2026-07-09 22:15 +0300
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-10 09:21 +0000
Re: How to inline the main function of a thread? Michael S <already5chosen@yahoo.com> - 2026-07-10 14:02 +0300
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-10 11:22 +0000
Re: How to inline the main function of a thread? Michael S <already5chosen@yahoo.com> - 2026-07-10 14:45 +0300
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-10 15:12 +0000
Re: How to inline the main function of a thread? Michael S <already5chosen@yahoo.com> - 2026-07-10 18:43 +0300
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-10 16:06 +0000
Re: How to inline the main function of a thread? Michael S <already5chosen@yahoo.com> - 2026-07-10 19:13 +0300
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-11 09:28 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-11 14:41 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-12 15:23 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-13 13:12 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-14 11:05 +0000
Re: How to inline the main function of a thread? scott@slp53.sl.home (Scott Lurndal) - 2026-07-14 14:31 +0000
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-14 15:42 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-10 15:33 -0700
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-10 15:33 -0700
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-08 14:15 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-09 08:55 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-09 12:51 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-10 09:22 +0000
Re: How to inline the main function of a thread? Michael S <already5chosen@yahoo.com> - 2026-07-10 14:22 +0300
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-10 11:24 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-10 12:32 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-11 09:29 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-11 14:09 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-12 15:15 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-12 10:58 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-13 09:39 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-13 13:14 -0700
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-05 13:16 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-06 09:29 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-06 12:49 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-07 10:41 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-07 15:17 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-08 09:38 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-08 14:17 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-09 08:56 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-09 12:53 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-10 09:24 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-10 13:36 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-11 09:30 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-11 14:08 -0700
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-07 15:19 -0700
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-04 23:36 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-05 08:21 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-05 01:22 -0700
Re: How to inline the main function of a thread? scott@slp53.sl.home (Scott Lurndal) - 2026-07-05 14:39 +0000
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-05 15:50 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-12 11:22 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-05 15:49 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-10 00:16 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-10 09:25 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-10 15:36 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-11 09:32 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-11 14:10 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-12 15:18 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-12 11:21 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-13 10:26 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-13 13:05 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-14 10:58 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-14 13:45 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-15 11:23 +0000
Re: How to inline the main function of a thread? scott@slp53.sl.home (Scott Lurndal) - 2026-07-15 14:07 +0000
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-15 15:54 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-15 15:51 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-16 10:44 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-16 12:37 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-17 09:26 +0000
Re: How to inline the main function of a thread? Michael S <already5chosen@yahoo.com> - 2026-07-17 13:32 +0300
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-17 12:00 -0700
Re: How to inline the main function of a thread? Michael S <already5chosen@yahoo.com> - 2026-07-18 23:12 +0300
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-18 17:15 -0700
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-18 17:18 -0700
Re: How to inline the main function of a thread? Michael S <already5chosen@yahoo.com> - 2026-07-19 04:56 +0300
Re: How to inline the main function of a thread? Michael S <already5chosen@yahoo.com> - 2026-07-19 05:00 +0300
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-19 13:54 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-19 07:57 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-19 13:54 -0700
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-19 13:57 -0700
Re: How to inline the main function of a thread? boltar@battlestar-galactica.com - 2026-07-20 07:51 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-20 13:15 -0700
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-18 17:37 -0700
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-16 12:40 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-17 09:27 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-19 13:55 -0700
Re: How to inline the main function of a thread? boltar@battlestar-galactica.com - 2026-07-20 07:49 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-20 13:16 -0700
Re: How to inline the main function of a thread? boltar@battlestar-galactica.com - 2026-07-21 15:55 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-21 13:47 -0700
Re: How to inline the main function of a thread? boltar@battlestar-galactica.com - 2026-07-21 21:13 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-21 14:28 -0700
Re: How to inline the main function of a thread? boltar@battlestar.co.uk - 2026-07-22 08:01 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-22 13:28 -0700
Re: How to inline the main function of a thread? boltar@battlestar.co.uk - 2026-07-23 15:01 +0000
Re: How to inline the main function of a thread? cross@spitfire.i.gajendra.net (Dan Cross) - 2026-07-22 01:53 +0000
Re: How to inline the main function of a thread? boltar@battlestar.co.uk - 2026-07-22 08:02 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-22 13:30 -0700
Re: How to inline the main function of a thread? Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2026-07-22 16:02 -0700
Re: How to inline the main function of a thread? scott@slp53.sl.home (Scott Lurndal) - 2026-07-23 15:00 +0000
Re: How to inline the main function of a thread? boltar@caprica.space - 2026-07-23 15:05 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-11 14:11 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-12 15:19 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-12 11:02 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-13 09:42 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-16 13:50 -0700
Re: How to inline the main function of a thread? Michael S <already5chosen@yahoo.com> - 2026-07-12 23:05 +0300
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-13 13:08 -0700
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-16 13:56 -0700
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-16 13:58 -0700
Re: How to inline the main function of a thread? Ross Finlayson <ross.a.finlayson@gmail.com> - 2026-07-03 10:45 -0700
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-03 12:36 -0700
Re: How to inline the main function of a thread? Tristan Wibberley <tristan.wibberley+netnews2@alumni.manchester.ac.uk> - 2026-07-28 12:50 +0100
Re: How to inline the main function of a thread? David Brown <david.brown@hesbynett.no> - 2026-06-30 11:07 +0200
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-06-30 10:46 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-01 12:25 -0700
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-02 08:13 +0000
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-06-30 10:41 +0000
Re: How to inline the main function of a thread? scott@slp53.sl.home (Scott Lurndal) - 2026-06-30 14:14 +0000
Re: How to inline the main function of a thread? Bonita Montero <Bonita.Montero@gmail.com> - 2026-06-30 16:30 +0200
Re: How to inline the main function of a thread? scott@slp53.sl.home (Scott Lurndal) - 2026-06-30 15:25 +0000
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-01 12:30 -0700
Re: How to inline the main function of a thread? Bonita Montero <Bonita.Montero@gmail.com> - 2026-07-05 14:03 +0200
Re: How to inline the main function of a thread? scott@slp53.sl.home (Scott Lurndal) - 2026-07-05 14:41 +0000
Re: How to inline the main function of a thread? Bonita Montero <Bonita.Montero@gmail.com> - 2026-07-05 20:08 +0200
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-05 13:05 -0700
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-05 14:03 -0700
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-05 14:36 -0700
Re: How to inline the main function of a thread? scott@slp53.sl.home (Scott Lurndal) - 2026-07-06 17:47 +0000
Re: How to inline the main function of a thread? Michael S <already5chosen@yahoo.com> - 2026-07-06 21:49 +0300
Re: How to inline the main function of a thread? Bonita Montero <Bonita.Montero@gmail.com> - 2026-07-08 15:47 +0200
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-08 14:32 -0700
Re: How to inline the main function of a thread? Bonita Montero <Bonita.Montero@gmail.com> - 2026-07-09 10:34 +0200
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-09 13:01 -0700
Re: How to inline the main function of a thread? Bonita Montero <Bonita.Montero@gmail.com> - 2026-07-10 05:58 +0200
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-12 11:19 -0700
Re: How to inline the main function of a thread? Bonita Montero <Bonita.Montero@gmail.com> - 2026-07-17 13:56 +0200
Re: How to inline the main function of a thread? Tristan Wibberley <tristan.wibberley+netnews2@alumni.manchester.ac.uk> - 2026-07-28 13:31 +0100
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-06-30 15:39 +0000
Re: How to inline the main function of a thread? Wuns Haerst <Wuns.Haerst@wurstfabrik.at> - 2026-06-30 18:00 +0200
Re: How to inline the main function of a thread? scott@slp53.sl.home (Scott Lurndal) - 2026-06-30 17:05 +0000
Re: How to inline the main function of a thread? boltar@caprica.universe - 2026-07-01 08:22 +0000
Re: How to inline the main function of a thread? Tristan Wibberley <tristan.wibberley+netnews2@alumni.manchester.ac.uk> - 2026-07-28 14:43 +0100
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-28 12:31 -0700
Re: How to inline the main function of a thread? boltar@uxvz2mpj0o8fzg70vyzzcf46nvx2.biz - 2026-07-29 08:36 +0000
Re: How to inline the main function of a thread? Michael S <already5chosen@yahoo.com> - 2026-06-30 23:29 +0300
Re: How to inline the main function of a thread? "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2026-07-04 23:47 -0700
Re: How to inline the main function of a thread? Wuns Haerst <Wuns.Haerst@wurstfabrik.at> - 2026-07-17 13:45 +0200
Re: How to inline the main function of a thread? Michael S <already5chosen@yahoo.com> - 2026-07-17 15:23 +0300
csiph-web