On Thu, May 18, 2017 at 5:05 PM, Graeme Geldenhuys <mailingli...@geldenhuys.co.uk> wrote: > Use Java instead. ;-) Check. Oh wait, that's what I did for that project.
Well, Java also has its issues. I am studying Java and I am completely shocked that you need to use "volatile" to avoid serious hard-to-debug multithreading bugs. It looks like you pretty much need to declare all vars that might be accessed from different threads as volatile from what I understood, because otherwise the java compiler might never write values to the variable at all, instead write only to a local cache. Amazing! In FPC this isn't needed since assignments always change real memory. Thinking about it, maybe FPC needs the oposite kind of variable modified, a "notvolatile" so that it could optimize more agressively in case you are 100% sure this code will be run on a single thread... This simple program never ends if you delete the volatile keyword (I tested here in Windows): import java.util.*; class FelipeTestThread { volatile boolean running = true; public void test() { new Thread(new Runnable() { public void run() { int counter = 0; while (running) { counter++; } System.out.println("Thread 1 finished. Counted up to " + counter); } }).start(); new Thread(new Runnable() { public void run() { // Sleep for a bit so that thread 1 has a chance to start try { Thread.sleep(100); } catch (InterruptedException ignored) { } System.out.println("Thread 2 finishing"); running = false; } }).start(); } public static void main(String[] args) { new FelipeTestThread().test(); } } Not to mention that 1 file per class is super annoying and it is impossible to resize arrays and there are no unsigned integers. Generics can't accept non-Object values. There is no way to pass parameters by reference, accessing operating system APIs is a nightmare which involves writing large JNI wrappers in C...etc. -- Felipe Monteiro de Carvalho _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal