using Process process = Process.Start(new ProcessStartInfo {
FileName = "python",
Arguments = @"path\pyscript.py",
UseShellExecute = false,
RedirectStandardInput = true,
RedirectStandardOutput = true
});
int[] arr = { 1, 2, 3, 4, 5, 6 };
using BinaryWriter writer = new BinaryWriter(process.StandardInput.BaseStream);
Array.ForEach(arr, writer.Write);
writer.Flush();
using BinaryReader reader = new BinaryReader(process.StandardOutput.BaseStream);
int result = reader.ReadInt32();
Console.WriteLine(result);
Console.ReadKey(false);
import os
import sys
stdin = sys.stdin.buffer
stdout = sys.stdout.buffer
def get_int_list():
stdin.seek(0, os.SEEK_END)
n = stdin.tell() // 4
arr = [0] * n
for i in range(n):
arr[i] = int.from_bytes(stdin.read(4), byteorder='little')
return arr
def write_int(i: int):
stdout.write(i.to_bytes(4, byteorder='little'))
nums = get_int_list()
result = sum(nums)
write_int(result)
В Си многопоточность.обычно реализована в библиотеке pthreads.hМногопоточность реализуется операционной системой. pthreads - просто библиотека, чтобы операционной системе сказать, мол, вот тебе отдельный поток для запуска
причём Си можно отлаживать как код на ассемблереНу да, Си всегда сначала компилируется в ассемблер, любым дизассемблером готовую программу можно разобрать на кусочки.
Прочитал в интернете, что ассемблерная программа может выполняться только на одном ядре.Покажите, где такая ерунда написана
Как тогда реализована многопоточность в СиВ Си - просто интерфейс управления многопоточностью. Сама многопоточность - в операционной системе.
раз есть эквивалентный код на ассемблере например, в gnu debuggerКак в Си, так и в ассемблере вы просто увидите "вызвать pthread_create", и всё